summaryrefslogtreecommitdiff
path: root/src/xsmfns.c
diff options
context:
space:
mode:
authorJan D <jhd@f20.localdomain>2015-03-28 12:33:25 +0100
committerJan D <jhd@f20.localdomain>2015-03-28 12:33:25 +0100
commitbe5e9348dc137d06655676e686f153cf33de4f28 (patch)
tree8ac1cac6f369d07559da76cb4603c20bc068b467 /src/xsmfns.c
parent733a9f114cc7219a8380db84b05081f145a163ae (diff)
downloademacs-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.
Diffstat (limited to 'src/xsmfns.c')
-rw-r--r--src/xsmfns.c46
1 files changed, 22 insertions, 24 deletions
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)