emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 5b55659 1/3: Avoid using %n in emacsclient


From: Lars Ingebrigtsen
Subject: master 5b55659 1/3: Avoid using %n in emacsclient
Date: Sun, 22 Aug 2021 10:59:09 -0400 (EDT)

branch: master
commit 5b55659baebd314a00e0219e65e356a9acdbc40a
Author: Omar Polo <op@omarpolo.com>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Avoid using %n in emacsclient
    
    * lib-src/emacsclient.c (local_sockname): Avoid using %n (bug#50155).
---
 lib-src/emacsclient.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c
index 8346524..018e81e 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -1401,10 +1401,8 @@ local_sockname (int s, char sockname[socknamesize], int 
tmpdirlen,
   /* Put the full address name into the buffer, since the caller might
      need it for diagnostics.  But don't overrun the buffer.  */
   uintmax_t uidmax = uid;
-  int emacsdirlen;
   int suffixlen = snprintf (sockname + tmpdirlen, socknamesize - tmpdirlen,
-                           "/emacs%"PRIuMAX"%n/%s", uidmax, &emacsdirlen,
-                           server_name);
+                           "/emacs%"PRIuMAX"/%s", uidmax, server_name);
   if (! (0 <= suffixlen && suffixlen < socknamesize - tmpdirlen))
     return ENAMETOOLONG;
 
@@ -1412,7 +1410,8 @@ local_sockname (int s, char sockname[socknamesize], int 
tmpdirlen,
      this user's directory and does not let others write to it; this
      fends off some symlink attacks.  To avoid races, keep the parent
      directory open while checking.  */
-  char *emacsdirend = sockname + tmpdirlen + emacsdirlen;
+  char *emacsdirend = sockname + tmpdirlen + suffixlen -
+    strlen(server_name) - 1;
   *emacsdirend = '\0';
   int dir = openat (AT_FDCWD, sockname,
                    O_PATH | O_DIRECTORY | O_NOFOLLOW | O_CLOEXEC);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]