Hello community, here is the log from the commit of package sysvinit for openSUSE:Factory checked in at Sat Oct 3 02:28:40 CEST 2009. -------- --- sysvinit/sysvinit.changes 2009-08-20 14:22:05.000000000 +0200 +++ sysvinit/sysvinit.changes 2009-09-29 10:50:40.000000000 +0200 @@ -1,0 +2,6 @@ +Tue Sep 29 10:48:03 CEST 2009 - werner@suse.de + +- Make killproc utils more stable in case that during read(2) a proc + file the corresponding process has already terminated (bnc#542717) + +------------------------------------------------------------------- calling whatdependson for head-i586 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ sysvinit.spec ++++++ --- /var/tmp/diff_new_pack.rGVKqK/_old 2009-10-03 01:45:52.000000000 +0200 +++ /var/tmp/diff_new_pack.rGVKqK/_new 2009-10-03 01:45:52.000000000 +0200 @@ -30,7 +30,7 @@ PreReq: coreutils AutoReqProv: on Version: 2.86 -Release: 213 +Release: 214 Summary: SysV-Style init BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: libselinux-devel libsepol-devel ++++++ killproc-2.16.dif ++++++ --- /var/tmp/diff_new_pack.rGVKqK/_old 2009-10-03 01:45:52.000000000 +0200 +++ /var/tmp/diff_new_pack.rGVKqK/_new 2009-10-03 01:45:52.000000000 +0200 @@ -1,4 +1,130 @@ ---- .dummy -+++ .dummy 2009-08-19 12:18:39.181901099 +0200 -@@ -0,0 +1 @@ -+this is a dummy, remove if real changes are required +--- libinit.c ++++ libinit.c 2009-09-29 10:42:09.875428620 +0200 +@@ -446,9 +446,9 @@ static pid_t getpppid(const pid_t ppid) + goto out; + + if ((fp = open(proc(pid, "stat"), O_PROCMODE)) != -1) { +- xread(fp, buf, BUFSIZ); ++ ssize_t len = xread(fp, buf, BUFSIZ); + close(fp); +- if (sscanf(buf,"%*d %*s %*c %d %*d %*d", &pppid) != 1) ++ if (len <= 0 || sscanf(buf,"%*d %*s %*c %d %*d %*d", &pppid) != 1) + warn("can not read ppid for process %d!\n", ppid); + } + out: +@@ -591,10 +591,11 @@ int pidof (const char * inname, const ch + char ent[3]; + boolean thread; + ssize_t len; ++ + len = xread(fp,ent,3); + close(fp); + +- if (!len) ++ if (len <= 0) + continue; + + thread = (strncmp(ent, "0 ", 2) == 0); +@@ -682,6 +683,9 @@ int pidof (const char * inname, const ch + len = xread(fp, entry, PATH_MAX); + close(fp); + ++ if (len <= 0) ++ continue; ++ + /* Seek for a script not for a binary */ + if (!(scrpt = checkscripts(entry, root, len, d->d_name))) + continue; +@@ -713,7 +717,7 @@ int pidof (const char * inname, const ch + len = xread(fp, entry, PATH_MAX); + close(fp); + +- if (!len) ++ if (len <= 0) + continue; + + comm = index(entry, ' '); +@@ -764,7 +768,8 @@ int verify_pidfile (const char * pid_fil + const char * root, unsigned short flags, + const boolean ignore) + { +- int fp, cnt; ++ int fp; ++ ssize_t cnt; + boolean isscrpt = false; + pid_t pid; + char *swapname = NULL, *bufp; +@@ -789,11 +794,12 @@ int verify_pidfile (const char * pid_fil + } + + errno = 0; +- if ((cnt = xread (fp, buf, BUFSIZ)) < 0) { ++ cnt = xread(fp, buf, BUFSIZ); ++ close(fp); ++ if (cnt < 0) { + warn("Can not read pid file %s: %s\n", pid_file, strerror(errno)); + return -1; + } +- close(fp); + buf[cnt] = '\0'; + + bufp = buf; +@@ -847,10 +853,11 @@ int verify_pidfile (const char * pid_fil + char ent[3]; + boolean thread; + ssize_t len; ++ + len = xread(fp, ent, sizeof(ent)); + close(fp); + +- if (!len) ++ if (len <= 0) + goto out; + + thread = (strncmp(ent, "0 ", 2) == 0); +@@ -932,6 +939,9 @@ int verify_pidfile (const char * pid_fil + len = xread(fp, entry, PATH_MAX); + close(fp); + ++ if (len <= 0) ++ goto out; ++ + /* Seek for a script not for a binary */ + if (!(scrpt = checkscripts(entry, root, len, buf))) + goto out; /* Nothing found */ +@@ -951,7 +961,7 @@ int verify_pidfile (const char * pid_fil + len = xread(fp, entry, PATH_MAX); + close(fp); + +- if (!len) ++ if (len <= 0) + goto out; + + comm = index(entry, ' '); +@@ -1040,7 +1050,7 @@ int check_pids (const char * inname, con + len = xread(fp, ent, sizeof(ent)); + close(fp); + +- if (!len) ++ if (len <= 0) + goto ignore; /* Bogus */ + + thread = (strncmp(ent, "0 ", 2) == 0); +@@ -1111,7 +1121,7 @@ int check_pids (const char * inname, con + len = xread(fp, entry, PATH_MAX); + close(fp); + +- if (!len) ++ if (len <= 0) + goto ignore; /* Bogus */ + + /* Seek for a script not for a binary */ +@@ -1131,7 +1141,7 @@ int check_pids (const char * inname, con + len = xread(fp, entry, PATH_MAX); + close(fp); + +- if (!len) ++ if (len <= 0) + goto ignore; /* Bogus */ + + comm = index(entry, ' '); ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org