Просмотр исходного кода

s-s-d: Do not follow symlinks when creating pidfiles

[guillem@debian.org:
 - Change mode to 0666. ]

Closes: #675918

Signed-off-by: Guillem Jover <guillem@debian.org>
Carsten Hey лет назад: 14
Родитель
Сommit
85d78f9eb2
2 измененных файлов с 9 добавлено и 1 удалено
  1. 2 0
      debian/changelog
  2. 7 1
      utils/start-stop-daemon.c

+ 2 - 0
debian/changelog

@@ -45,6 +45,8 @@ dpkg (1.16.4) UNRELEASED; urgency=low
   * Clarify also in the dpkg(1) man page (already present in the dpkg.cfg(5)
     man page) the valid filenames for /etc/dpkg/dpkg.cfg.d/ fragment files.
     Closes: #674674
+  * Fix start-stop-daemon to not follow symlinks when creating pidfiles.
+    Thanks to Carsten Hey <carsten@debian.org>. Closes: #675918
 
   [ Updated man page translations ]
   * German (Helge Kreutzmann).

+ 7 - 1
utils/start-stop-daemon.c

@@ -377,8 +377,14 @@ static void
 write_pidfile(const char *filename, pid_t pid)
 {
 	FILE *fp;
+	int fd;
+
+	fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC | O_NOFOLLOW, 0666);
+	if (fd < 0)
+		fp = NULL;
+	else
+		fp = fdopen(fd, "w");
 
-	fp = fopen(filename, "w");
 	if (fp == NULL)
 		fatal("unable to open pidfile '%s' for writing", filename);