Prevent a zellij session from attaching to itself. (#911)

* fix #905
Prevent a zellij session from attaching to itself.

* Add check while attaching using index as well
This commit is contained in:
Kunal Mohan 2021-11-30 17:31:05 +05:30 committed by GitHub
parent 5180d8016f
commit 0ed8f06b9f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 0 deletions

View file

@ -16,6 +16,7 @@ use zellij_utils::input::options::Options;
use zellij_utils::nix;
use zellij_utils::{
cli::{CliArgs, Command, SessionCommand, Sessions},
envs,
setup::{get_default_data_dir, Setup},
};
@ -186,6 +187,13 @@ pub(crate) fn start_client(opts: CliArgs) {
attach_with_session_name(session_name, config_options.clone(), create)
};
if let Ok(val) = std::env::var(envs::SESSION_NAME_ENV_KEY) {
if val == *client.get_session_name() {
eprintln!("You are trying to attach to the current session(\"{}\"). Zellij does not support nesting a session in itself", val);
process::exit(1);
}
}
let attach_layout = match client {
ClientInfo::Attach(_, _) => None,
ClientInfo::New(_) => layout,

View file

@ -91,6 +91,15 @@ pub enum ClientInfo {
New(String),
}
impl ClientInfo {
pub fn get_session_name(&self) -> &str {
match self {
Self::Attach(ref name, _) => name,
Self::New(ref name) => name,
}
}
}
#[derive(Debug, Clone)]
pub(crate) enum InputInstruction {
KeyEvent(termion::event::Event, Vec<u8>),