aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJan D2015-03-28 12:33:25 +0100
committerJan D2015-03-28 12:33:25 +0100
commitbe5e9348dc137d06655676e686f153cf33de4f28 (patch)
tree8ac1cac6f369d07559da76cb4603c20bc068b467 /src
parent733a9f114cc7219a8380db84b05081f145a163ae (diff)
downloademacs-be5e9348dc137d06655676e686f153cf33de4f28.tar.gz
emacs-be5e9348dc137d06655676e686f153cf33de4f28.zip
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')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/xsmfns.c46
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 @@
12015-03-28 Jan Djärv <jan.h.d@swipnet.se>
2
3 * xsmfns.c (smc_save_yourself_CB): Return if Vinvocation_name or
4 user_login_name are not strings.
5
12015-03-28 Eli Zaretskii <eliz@gnu.org> 62015-03-28 Eli Zaretskii <eliz@gnu.org>
2 7
3 * w32.c (sys_connect): Fix a mistake in previous commit that broke 8 * 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,
169 int props_idx = 0; 169 int props_idx = 0;
170 int i; 170 int i;
171 char *smid_opt, *chdir_opt = NULL; 171 char *smid_opt, *chdir_opt = NULL;
172 Lisp_Object user_login_name = Fuser_login_name (Qnil);
173
174 // Must have these.
175 if (! STRINGP (Vinvocation_name) || ! STRINGP (user_login_name))
176 return;
172 177
173 /* How to start a new instance of Emacs. */ 178 /* How to start a new instance of Emacs. */
174 props[props_idx] = &prop_ptr[props_idx]; 179 props[props_idx] = &prop_ptr[props_idx];
@@ -180,32 +185,25 @@ smc_save_yourself_CB (SmcConn smcConn,
180 props[props_idx]->vals[0].value = emacs_program; 185 props[props_idx]->vals[0].value = emacs_program;
181 ++props_idx; 186 ++props_idx;
182 187
183 if (STRINGP (Vinvocation_name)) 188 /* The name of the program. */
184 { 189 props[props_idx] = &prop_ptr[props_idx];
185 /* The name of the program. */ 190 props[props_idx]->name = xstrdup (SmProgram);
186 props[props_idx] = &prop_ptr[props_idx]; 191 props[props_idx]->type = xstrdup (SmARRAY8);
187 props[props_idx]->name = xstrdup (SmProgram); 192 props[props_idx]->num_vals = 1;
188 props[props_idx]->type = xstrdup (SmARRAY8); 193 props[props_idx]->vals = &values[val_idx++];
189 props[props_idx]->num_vals = 1; 194 props[props_idx]->vals[0].length = SBYTES (Vinvocation_name);
190 props[props_idx]->vals = &values[val_idx++]; 195 props[props_idx]->vals[0].value = SDATA (Vinvocation_name);
191 props[props_idx]->vals[0].length = SBYTES (Vinvocation_name); 196 ++props_idx;
192 props[props_idx]->vals[0].value = SDATA (Vinvocation_name);
193 ++props_idx;
194 }
195 197
196 /* User id. */ 198 /* User id. */
197 Lisp_Object user_login_name = Fuser_login_name (Qnil); 199 props[props_idx] = &prop_ptr[props_idx];
198 if (STRINGP (user_login_name)) 200 props[props_idx]->name = xstrdup (SmUserID);
199 { 201 props[props_idx]->type = xstrdup (SmARRAY8);
200 props[props_idx] = &prop_ptr[props_idx]; 202 props[props_idx]->num_vals = 1;
201 props[props_idx]->name = xstrdup (SmUserID); 203 props[props_idx]->vals = &values[val_idx++];
202 props[props_idx]->type = xstrdup (SmARRAY8); 204 props[props_idx]->vals[0].length = SBYTES (user_login_name);
203 props[props_idx]->num_vals = 1; 205 props[props_idx]->vals[0].value = SDATA (user_login_name);
204 props[props_idx]->vals = &values[val_idx++]; 206 ++props_idx;
205 props[props_idx]->vals[0].length = SBYTES (user_login_name);
206 props[props_idx]->vals[0].value = SDATA (user_login_name);
207 ++props_idx;
208 }
209 207
210 char *cwd = get_current_dir_name (); 208 char *cwd = get_current_dir_name ();
211 if (cwd) 209 if (cwd)