]> git.eshelyaron.com Git - emacs.git/commitdiff
Protect against the host name containing an alpha character
authorLars Ingebrigtsen <larsi@gnus.org>
Mon, 25 Apr 2022 08:46:28 +0000 (10:46 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Mon, 25 Apr 2022 12:09:53 +0000 (14:09 +0200)
* src/filelock.c (lock_file_1, current_lock_owner): Protect
against the unlikely case that the host name contains an alpha
character (bug#14250).

src/filelock.c

index 67948e1f099c0c880ee0cd7061b30a5f01b25303..a657cc4582c32e15e35e57f3a163ea411ceb20f0 100644 (file)
@@ -419,6 +419,13 @@ lock_file_1 (Lisp_Object lfname, bool force)
   Lisp_Object luser_name = Fuser_login_name (Qnil);
   Lisp_Object lhost_name = Fsystem_name ();
 
+  /* Protect against the extremely unlikely case of the host name
+     containing an @ character.  */
+  if (!NILP (lhost_name) && strchr (SSDATA (lhost_name), '@'))
+    lhost_name = CALLN (Ffuncall, intern ("string-replace"),
+                       build_string ("@"), build_string ("-"),
+                       lhost_name);
+
   char const *user_name = STRINGP (luser_name) ? SSDATA (luser_name) : "";
   char const *host_name = STRINGP (lhost_name) ? SSDATA (lhost_name) : "";
   char lock_info_str[MAX_LFINFO + 1];
@@ -583,6 +590,12 @@ current_lock_owner (lock_info_type *owner, Lisp_Object lfname)
      .#test.txt -> larsi@.118961:1646577954) is an empty string.  */
   if (NILP (system_name))
     system_name = build_string ("");
+  /* Protect against the extremely unlikely case of the host name
+     containing an @ character.  */
+  else if (strchr (SSDATA (system_name), '@'))
+    system_name = CALLN (Ffuncall, intern ("string-replace"),
+                        build_string ("@"), build_string ("-"),
+                        system_name);
   /* On current host?  */
   if (STRINGP (system_name)
       && dot - (at + 1) == SBYTES (system_name)