]> diplodocus.org Git - nmh/blobdiff - sbr/lock_file.c
Fix invalid pointer arithmetic.
[nmh] / sbr / lock_file.c
index 8b0a1215cf734718ce4a4a7d104933cb90ff2364..2c8b1c7531ae9ea286de318e1bd52c88d119c894 100644 (file)
@@ -90,7 +90,7 @@ static int lkopen_lockf (const char *, int, mode_t, int *);
 static int lkopen_flock (const char *, int, mode_t, int *);
 #endif /* HAVE_FLOCK */
 
-static enum locktype init_locktype(const char *);
+static enum locktype init_locktype(const char *) PURE;
 
 static int lkopen_dot (const char *, int, mode_t, int *);
 static void lkclose_dot (int, const char *);
@@ -522,6 +522,7 @@ lkopen_dot (const char *file, int access, mode_t mode, int *failed_to_lock)
             lockname (file, &lkinfo, 1);
        }
 
+        close(fd);
         *failed_to_lock = 1;
         return -1;
     }
@@ -575,7 +576,7 @@ lockit (struct lockinfo *li)
     fd = link(tmpfile, curlock);
     (void) m_unlink(tmpfile);
 
-    return (fd == -1 ? -1 : 0);
+    return fd == -1 ? -1 : 0;
 }
 #endif /* HAVE_LIBLOCKFILE */