noip.c (create_sockdir): Make sure the socket directory isn't a symlink.
authorMark Wooding <mdw@distorted.org.uk>
Thu, 24 Mar 2016 11:06:41 +0000 (11:06 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 16 Apr 2016 14:57:41 +0000 (15:57 +0100)
Oh, dear.  This is a long-standing bug, and a bad one for systems which
don't set per-user $TMPDIR directories.

noip.c

diff --git a/noip.c b/noip.c
index 9c5cd68..72baaee 100644 (file)
--- a/noip.c
+++ b/noip.c
@@ -1436,13 +1436,13 @@ static void create_sockdir(void)
 {
   struct stat st;
 
-  if (stat(sockdir, &st)) {
+  if (lstat(sockdir, &st)) {
     if (errno == ENOENT) {
       if (mkdir(sockdir, 0700)) {
        perror("noip: creating socketdir");
        exit(127);
       }
-      if (!stat(sockdir, &st))
+      if (!lstat(sockdir, &st))
        goto check;
     }
     perror("noip: checking socketdir");