diff options
| author | Richard M. Stallman | 1997-07-12 06:51:51 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1997-07-12 06:51:51 +0000 |
| commit | 662c2ef22a23cc19de6cdd1c151e08795ffd5b17 (patch) | |
| tree | 1981a8606ed875ac2f31199128c1380a32b3ec92 | |
| parent | 39ce6952863cb0dfcb5bce5bade141bf69dd9f77 (diff) | |
| download | emacs-662c2ef22a23cc19de6cdd1c151e08795ffd5b17.tar.gz emacs-662c2ef22a23cc19de6cdd1c151e08795ffd5b17.zip | |
(lock_file_1): Don't crash if Fuser_login_name or
Fsystem_name don't return strings.
(current_lock_owner): Likewise.
| -rw-r--r-- | src/filelock.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/filelock.c b/src/filelock.c index d92e0476bad..5000f87a615 100644 --- a/src/filelock.c +++ b/src/filelock.c | |||
| @@ -133,10 +133,20 @@ lock_file_1 (lfname, force) | |||
| 133 | int force; | 133 | int force; |
| 134 | { | 134 | { |
| 135 | register int err; | 135 | register int err; |
| 136 | char *user_name = (char *) XSTRING (Fuser_login_name (Qnil))->data; | 136 | char *user_name; |
| 137 | char *host_name = (char *) XSTRING (Fsystem_name ())->data; | 137 | char *host_name; |
| 138 | char *lock_info_str = alloca (strlen (user_name) + strlen (host_name) | 138 | char *lock_info_str; |
| 139 | + LOCK_PID_MAX + 5); | 139 | |
| 140 | if (STRINGP (Fuser_login_name (Qnil))) | ||
| 141 | user_name = XSTRING (Fuser_login_name (Qnil))->data; | ||
| 142 | else | ||
| 143 | user_name = ""; | ||
| 144 | if (STRINGP (Fsystem_name ())) | ||
| 145 | host_name = XSTRING (Fsystem_name ())->data; | ||
| 146 | else | ||
| 147 | host_name = ""; | ||
| 148 | lock_info_str = alloca (strlen (user_name) + strlen (host_name) | ||
| 149 | + LOCK_PID_MAX + 5); | ||
| 140 | 150 | ||
| 141 | sprintf (lock_info_str, "%s@%s.%lu", user_name, host_name, | 151 | sprintf (lock_info_str, "%s@%s.%lu", user_name, host_name, |
| 142 | (unsigned long) getpid ()); | 152 | (unsigned long) getpid ()); |
| @@ -225,7 +235,8 @@ current_lock_owner (owner, lfname) | |||
| 225 | xfree (lfinfo); | 235 | xfree (lfinfo); |
| 226 | 236 | ||
| 227 | /* On current host? */ | 237 | /* On current host? */ |
| 228 | if (strcmp (owner->host, XSTRING (Fsystem_name ())->data) == 0) | 238 | if (STRINGP (Fsystem_name ()) |
| 239 | && strcmp (owner->host, XSTRING (Fsystem_name ())->data) == 0) | ||
| 229 | { | 240 | { |
| 230 | if (owner->pid == getpid ()) | 241 | if (owner->pid == getpid ()) |
| 231 | ret = 2; /* We own it. */ | 242 | ret = 2; /* We own it. */ |