Package: scanbuttond
Version: 0.2.3-6
Severity: important

I tried to run scanbuttond from udev by appending
, RUN+="/usr/bin/scanbuttond" to a rule in /etc/udev/libsane.rules. But the 
program segfaults because the environment variable PATH is not set. I 
attached a patch which corrects the problem.

-- System Information:
Debian Release: 4.0
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.24.7
Locale: [EMAIL PROTECTED], [EMAIL PROTECTED] (charmap=ISO-8859-15) (ignored: 
LC_ALL set to [EMAIL PROTECTED])

Versions of packages scanbuttond depends on:
ii  libc6                  2.3.6.ds1-13etch5 GNU C Library: Shared libraries
ii  libsane                1.0.18-5          API library for scanners
ii  libusb-0.1-4           2:0.1.12-5        userspace USB programming library

Versions of packages scanbuttond recommends:
ii  sane-utils                    1.0.18-5   API library for scanners -- 
utilit

-- no debconf information
--- scanbuttond.c.orig	2008-06-03 22:11:00.000000000 +0200
+++ scanbuttond.c	2008-06-03 22:11:21.000000000 +0200
@@ -268,13 +268,23 @@ int main(int argc, char** argv)
 
 	// setup the environment
 	char* oldpath = getenv("PATH");
+	if (oldpath == NULL) {
+		oldpath = "";
+	}
 	char* dir = dirname(argv[0]);
 	path = (char*)malloc(strlen(oldpath) + strlen(dir) + 1);
-	strcpy(path, oldpath);
-	strcat(path, ":");
-	strcat(path, dir);
-	setenv("PATH", path, 1);
-	free(path);
+	if (path) {
+		if (strlen(oldpath)) {
+			strcpy(path, oldpath);
+			strcat(path, ":");
+		}
+		else {
+			path[0] = 0;
+		}
+		strcat(path, dir);
+		setenv("PATH", path, 1);
+		free(path);
+	}
 
 	syslog(LOG_DEBUG, "running scanner initialization script...");
 	execute_and_wait(initscanner_script);

Reply via email to