diff options
author | Jan D <jhd@f20.localdomain> | 2015-03-28 12:33:25 +0100 |
---|---|---|
committer | Jan D <jhd@f20.localdomain> | 2015-03-28 12:33:25 +0100 |
commit | be5e9348dc137d06655676e686f153cf33de4f28 (patch) | |
tree | 8ac1cac6f369d07559da76cb4603c20bc068b467 | |
parent | 733a9f114cc7219a8380db84b05081f145a163ae (diff) | |
download | emacs-be5e9348dc137d06655676e686f153cf33de4f28.tar.gz |
Don't send bad SM messages.
* xsmfns.c (smc_save_yourself_CB): Return if Vinvocation_name or
user_login_name are not strings.
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/xsmfns.c | 46 |
2 files changed, 27 insertions, 24 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 0cc0a42b349..7874910c813 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2015-03-28 Jan Djärv <jan.h.d@swipnet.se> + + * xsmfns.c (smc_save_yourself_CB): Return if Vinvocation_name or + user_login_name are not strings. + 2015-03-28 Eli Zaretskii <eliz@gnu.org> * w32.c (sys_connect): Fix a mistake in previous commit that broke diff --git a/src/xsmfns.c b/src/xsmfns.c index 375b51c4466..48aaa9bef8a 100644 --- a/src/xsmfns.c +++ b/src/xsmfns.c @@ -169,6 +169,11 @@ smc_save_yourself_CB (SmcConn smcConn, int props_idx = 0; int i; char *smid_opt, *chdir_opt = NULL; + Lisp_Object user_login_name = Fuser_login_name (Qnil); + + // Must have these. + if (! STRINGP (Vinvocation_name) || ! STRINGP (user_login_name)) + return; /* How to start a new instance of Emacs. */ props[props_idx] = &prop_ptr[props_idx]; @@ -180,32 +185,25 @@ smc_save_yourself_CB (SmcConn smcConn, props[props_idx]->vals[0].value = emacs_program; ++props_idx; - if (STRINGP (Vinvocation_name)) - { - /* The name of the program. */ - props[props_idx] = &prop_ptr[props_idx]; - props[props_idx]->name = xstrdup (SmProgram); - props[props_idx]->type = xstrdup (SmARRAY8); - props[props_idx]->num_vals = 1; - props[props_idx]->vals = &values[val_idx++]; - props[props_idx]->vals[0].length = SBYTES (Vinvocation_name); - props[props_idx]->vals[0].value = SDATA (Vinvocation_name); - ++props_idx; - } + /* The name of the program. */ + props[props_idx] = &prop_ptr[props_idx]; + props[props_idx]->name = xstrdup (SmProgram); + props[props_idx]->type = xstrdup (SmARRAY8); + props[props_idx]->num_vals = 1; + props[props_idx]->vals = &values[val_idx++]; + props[props_idx]->vals[0].length = SBYTES (Vinvocation_name); + props[props_idx]->vals[0].value = SDATA (Vinvocation_name); + ++props_idx; /* User id. */ - Lisp_Object user_login_name = Fuser_login_name (Qnil); - if (STRINGP (user_login_name)) - { - props[props_idx] = &prop_ptr[props_idx]; - props[props_idx]->name = xstrdup (SmUserID); - props[props_idx]->type = xstrdup (SmARRAY8); - props[props_idx]->num_vals = 1; - props[props_idx]->vals = &values[val_idx++]; - props[props_idx]->vals[0].length = SBYTES (user_login_name); - props[props_idx]->vals[0].value = SDATA (user_login_name); - ++props_idx; - } + props[props_idx] = &prop_ptr[props_idx]; + props[props_idx]->name = xstrdup (SmUserID); + props[props_idx]->type = xstrdup (SmARRAY8); + props[props_idx]->num_vals = 1; + props[props_idx]->vals = &values[val_idx++]; + props[props_idx]->vals[0].length = SBYTES (user_login_name); + props[props_idx]->vals[0].value = SDATA (user_login_name); + ++props_idx; char *cwd = get_current_dir_name (); if (cwd) |