Package: nstx
Version: 1.1-beta6-4
Severity: normal
Tags: patch

If the chroot dir (/var/run/nstxd by default) doesn't exist, nstxd fails
to start, e.g. if /var/run is on a RAM fs (tmpfs). The attached patch
tries to create the chroot dir, before chroot()'ing to it. This should
match the behaviour of other daemons.

-- System Information:
Debian Release: lenny/sid
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: arm (armv5tel)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-4-ixp4xx
Locale: LANG=da_DK.UTF-8, LC_CTYPE=da_DK.UTF-8 (charmap=UTF-8)

Versions of packages nstx depends on:
ii  adduser                     3.102        Add and remove users and groups
ii  libc6                       2.3.6.ds1-13 GNU C Library: Shared libraries

nstx recommends no packages.

-- no debconf information
Index: nstx-1.1-beta6/nstxd.c
===================================================================
--- nstx-1.1-beta6.orig/nstxd.c	2007-05-16 12:41:15.000000000 +0200
+++ nstx-1.1-beta6/nstxd.c	2007-05-16 12:50:41.000000000 +0200
@@ -22,6 +22,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <fcntl.h>
@@ -127,6 +128,13 @@
    if (dir) {
 	/* Open the log-socket now (with LOG_NDELAY) before chroot-ing */
 	openlog(argv[0], LOG_PERROR|LOG_PID|LOG_CONS|LOG_NDELAY, LOG_DAEMON);
+
+	/* Make sure the chroot dir exists */
+	if (mkdir(dir, 0755) < 0 && errno != EEXIST) {
+		syslog(LOG_ERR, "Can't create chroot dir %s: %m", dir);
+		exit(EXIT_FAILURE);
+	}
+
 	if (chroot(dir)) {
 		syslog(LOG_ERR, "Can't chroot to %s: %m", dir);
 		exit(EXIT_FAILURE); /* Too many possible causes */

Reply via email to