Package: procps
Version: 3.2.7
Severity: important
Tags: patch
Fixes the PATH_MAX problems in proc/readproc.c file
and pwdx.c file. This patch builds procps on Hurd. And
the tools pgrep, pkill, kill, top, watch, tload also
work.
-- System Information:
Debian Release: lenny/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: hurd-i386 (i686-AT386)
Kernel: GNU-Mach 1.3.99/Hurd-0.3
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/bash
Only in procps-3.2.7/: build-stamp
Only in procps-3.2.7/debian: files
Only in procps-3.2.7/debian: libproc-dev
Only in procps-3.2.7/debian: libproc-dev.debhelper.log
diff -ur cl3/procps-3.2.7/debian/postinst procps-3.2.7/debian/postinst
--- cl3/procps-3.2.7/debian/postinst 2008-08-21 17:35:17.000000000 +0530
+++ procps-3.2.7/debian/postinst 2008-08-21 17:49:08.000000000 +0530
@@ -60,9 +60,17 @@
fi
#
- # Now to do the alternatives for w and ps
+ # Now to do the alternatives for w uptime kill vmstat and ps
update-alternatives --install /usr/bin/w w /usr/bin/w.procps 50
\
--slave /usr/share/man/man1/w.1.gz w.1.gz
/usr/share/man/man1/w.procps.1.gz
+ update-alternatives --install /usr/bin/uptime uptime
/usr/bin/uptime.procps 50 \
+ --slave /usr/share/man/man1/uptime.1.gz uptime.1.gz
/usr/share/man/man1/uptime.procps.1.gz
+ update-alternatives --install /usr/bin/kill kill
/usr/bin/kill.procps 50 \
+ --slave /usr/share/man/man1/kill.1.gz kill.1.gz
/usr/share/man/man1/kill.procps.1.gz
+ update-alternatives --install /usr/bin/vmstat vmstat
/usr/bin/vmstat.procps 50 \
+ --slave /usr/share/man/man8/vmstat.8.gz vmstat.8.gz
/usr/share/man/man8/vmstat.procps.8.gz
+ update-alternatives --install /bin/ps ps /bin/ps.procps 50 \
+ --slave /usr/share/man/man1/ps.1.gz ps.1.gz
/usr/share/man/man1/ps.procps.1.gz
;;
Only in procps-3.2.7/debian: procps
Only in procps-3.2.7/debian: procps.debhelper.log
Only in procps-3.2.7/debian: procps.postinst.debhelper
Only in procps-3.2.7/debian: procps.postrm.debhelper
Only in procps-3.2.7/debian: procps.prerm.debhelper
Only in procps-3.2.7/debian: procps.substvars
diff -ur cl3/procps-3.2.7/debian/rules procps-3.2.7/debian/rules
--- cl3/procps-3.2.7/debian/rules 2008-08-21 17:35:17.000000000 +0530
+++ procps-3.2.7/debian/rules 2008-08-22 04:08:47.000000016 +0530
@@ -55,18 +55,46 @@
(cd $(DEBROOT)/usr/bin && mv w w.procps )
(cd $(DEBROOT)/usr/share/man/man1 && mv w.1 w.procps.1 )
+ # Rename kill as there are two of them
+ (cd $(DEBROOT)/bin && mv kill kill.procps )
+ (cd $(DEBROOT)/usr/share/man/man1 && mv kill.1 kill.procps.1 )
+
+ # Rename vmstat as there are two of them
+ (cd $(DEBROOT)/usr/bin && mv vmstat vmstat.procps )
+ (cd $(DEBROOT)/usr/share/man/man8 && mv vmstat.8 vmstat.procps.8 )
+
+ # Rename uptime as there are two of them
+ (cd $(DEBROOT)/usr/bin && mv uptime uptime.procps )
+ (cd $(DEBROOT)/usr/share/man/man1 && mv uptime.1 uptime.procps.1 )
+
+ # Rename ps as there are two of them
+ (cd $(DEBROOT)/bin && mv ps ps.procps )
+ (cd $(DEBROOT)/usr/share/man/man1 && mv ps.1 ps.procps.1 )
+
# Work-around until proc includes fixed
(cp proc/*.h $(CURDIR)/debian/libproc-dev/usr/include/proc)
cp static/libproc.a $(CURDIR)/debian/libproc-dev/usr/lib
ifneq ($(DEB_HOST_ARCH_OS), linux)
rm -f \
- $(CURDIR)/debian/procps/bin/kill \
- $(CURDIR)/debian/procps/usr/share/man/man1/kill.1 \
+ $(CURDIR)/debian/procps/usr/bin/slabtop \
+ $(CURDIR)/debian/procps/usr/share/man/man1/slabtop.1 \
$(CURDIR)/debian/procps/sbin/sysctl \
$(CURDIR)/debian/procps/usr/share/man/man8/sysctl.8 \
$(NULL)
endif
+ifeq ($(DEB_HOST_ARCH_OS), kfreebsd)
+ rm -f \
+ $(CURDIR)/debian/procps/bin/kill \
+ $(CURDIR)/debian/procps/usr/share/man/man1/kill.1 \
+ $(NULL)
+endif
+ifeq ($(DEB_HOST_ARCH_OS), hurd)
+ rm -f \
+ $(CURDIR)/debian/procps/usr/bin/pmap \
+ $(CURDIR)/debian/procps/usr/share/man/man1/pmap.1 \
+ $(NULL)
+endif
dh_movefiles --sourcedir=debian/procps
#rmdir $(CURDIR)/debian/procps/usr/include/proc
Only in procps-3.2.7/: free
Only in procps-3.2.7/: free.o
Only in procps-3.2.7/: kill
Only in procps-3.2.7/: patch-stamp
Only in procps-3.2.7/: pgrep
Only in procps-3.2.7/: pgrep.o
Only in procps-3.2.7/: pkill
Only in procps-3.2.7/: pmap
Only in procps-3.2.7/: pmap.o
Only in procps-3.2.7/proc: .depend
Only in procps-3.2.7/proc: alloc.o
Only in procps-3.2.7/proc: devname.o
Only in procps-3.2.7/proc: escape.o
Only in procps-3.2.7/proc: ksym.o
Only in procps-3.2.7/proc: libproc-3.2.7.so
Only in procps-3.2.7/proc: pwcache.o
diff -ur cl3/procps-3.2.7/proc/readproc.c procps-3.2.7/proc/readproc.c
--- cl3/procps-3.2.7/proc/readproc.c 2008-08-21 17:39:52.000000000 +0530
+++ procps-3.2.7/proc/readproc.c 2008-08-21 10:20:21.000000000 +0530
@@ -1036,7 +1036,7 @@
* and filled out proc_t structure.
*/
proc_t * get_proc_stats(pid_t pid, proc_t *p) {
- static char path[PATH_MAX], sbuf[1024];
+ static char path[32], sbuf[1024];
struct stat statbuf;
sprintf(path, "/proc/%d", pid);
Only in procps-3.2.7/proc: readproc.o
Only in procps-3.2.7/proc: sig.o
Only in procps-3.2.7/proc: slab.o
Only in procps-3.2.7/proc: sysinfo.o
Only in procps-3.2.7/proc: version.o
Only in procps-3.2.7/proc: whattime.o
Only in procps-3.2.7/ps: display.o
Only in procps-3.2.7/ps: global.o
Only in procps-3.2.7/ps: help.o
Only in procps-3.2.7/ps: output.o
Only in procps-3.2.7/ps: parser.o
Only in procps-3.2.7/ps: ps
Only in procps-3.2.7/ps: select.o
Only in procps-3.2.7/ps: sortformat.o
Only in procps-3.2.7/: pwdx
diff -ur cl3/procps-3.2.7/pwdx.c procps-3.2.7/pwdx.c
--- cl3/procps-3.2.7/pwdx.c 2006-06-17 14:59:06.000000000 +0530
+++ procps-3.2.7/pwdx.c 2008-08-22 04:29:52.000000000 +0530
@@ -35,7 +35,6 @@
int main(int argc, char* argv[])
{
- char buf[PATH_MAX+1];
regex_t re;
int i;
@@ -59,6 +58,7 @@
for (i = 1; i < argc; i++) {
if (regexec(&re, argv[i], 0, NULL, 0) != 0) {
+ char buf[27 + strlen (argv[i]) + 1]; // Constant 27 is the
length of the error string "pwdx: ... "
snprintf(buf, sizeof buf, "pwdx: invalid process id: %s\n",
argv[i]);
die(buf);
}
@@ -68,9 +68,13 @@
regfree(&re);
+ int alloclen = 128;
+ char *pathbuf = malloc(alloclen);
+
for (i = 1; i < argc; i++) {
- char * s = buf;
+ char * s;
int len;
+ char buf[10 + strlen(argv[i]) + 1]; // Constant 10 is the length of
strings "/proc/" + "/cwd" + 1
// At this point, all arguments are in the form /proc/nnnn
// or nnnn, so a simple check based on the first char is
@@ -82,7 +86,12 @@
// buf contains /proc/nnnn/cwd symlink name on entry, the
// target of that symlink on return
- if ((len = readlink(buf, buf, PATH_MAX)) < 0) {
+ while ((len = readlink(buf, pathbuf, alloclen) == alloclen)) {
+ alloclen *= 2;
+ s = pathbuf = realloc(pathbuf, alloclen);
+ }
+
+ if (len < 0) {
s = strerror(errno == ENOENT ? ESRCH : errno);
} else {
buf[len] = 0;
@@ -91,5 +100,7 @@
printf("%s: %s\n", argv[i], s);
}
+ free(pathbuf);
+
return 0;
}
Only in procps-3.2.7/: pwdx.o
Only in procps-3.2.7/: skill
Only in procps-3.2.7/: skill.o
Only in procps-3.2.7/: slabtop
Only in procps-3.2.7/: slabtop.o
Only in procps-3.2.7/: snice
Only in procps-3.2.7/: static
Only in procps-3.2.7/: sysctl
Only in procps-3.2.7/: sysctl.o
Only in procps-3.2.7/: tload
Only in procps-3.2.7/: tload.o
Only in procps-3.2.7/: top
Only in procps-3.2.7/: top.o
Only in procps-3.2.7/: uptime
Only in procps-3.2.7/: uptime.o
Only in procps-3.2.7/: vmstat
Only in procps-3.2.7/: vmstat.o
Only in procps-3.2.7/: w
Only in procps-3.2.7/: w.o
Only in procps-3.2.7/: watch
Only in procps-3.2.7/: watch.o