[sysvinit/f14/master] fix sysvinit-2.87-omit.patch - check return value of canonicalize_file_name() (#657646)
Petr Lautrbach
plautrba at fedoraproject.org
Mon Nov 29 13:18:21 UTC 2010
commit b8cd902dcae2e389543b0cc3ad8dc93c56bd3e14
Author: Petr Lautrbach <plautrba at redhat.com>
Date: Mon Nov 29 13:45:07 2010 +0100
fix sysvinit-2.87-omit.patch - check return value of canonicalize_file_name() (#657646)
sysvinit-2.87-omit.patch | 55 ++++++++++++++++++++++++++++-----------------
1 files changed, 34 insertions(+), 21 deletions(-)
---
diff --git a/sysvinit-2.87-omit.patch b/sysvinit-2.87-omit.patch
index f76fcf8..80bf8f7 100644
--- a/sysvinit-2.87-omit.patch
+++ b/sysvinit-2.87-omit.patch
@@ -1,7 +1,8 @@
-diff -up sysvinit-2.87dsf/man/pidof.8.omit sysvinit-2.87dsf/man/pidof.8
---- sysvinit-2.87dsf/man/pidof.8.omit 2010-09-09 17:08:32.000000000 -0400
-+++ sysvinit-2.87dsf/man/pidof.8 2010-09-09 17:10:36.262473016 -0400
-@@ -6,6 +6,7 @@ pidof -- find the process ID of a runnin
+diff --git a/man/pidof.8 b/man/pidof.8
+index 06859ed..416a110 100644
+--- a/man/pidof.8
++++ b/man/pidof.8
+@@ -6,6 +6,7 @@ pidof -- find the process ID of a running program.
.RB [ \-s ]
.RB [ \-c ]
.RB [ \-x ]
@@ -21,9 +22,10 @@ diff -up sysvinit-2.87dsf/man/pidof.8.omit sysvinit-2.87dsf/man/pidof.8
.SH "EXIT STATUS"
.TP
.B 0
-diff -up sysvinit-2.87dsf/src/killall5.c.omit sysvinit-2.87dsf/src/killall5.c
---- sysvinit-2.87dsf/src/killall5.c.omit 2010-09-09 17:08:32.713473016 -0400
-+++ sysvinit-2.87dsf/src/killall5.c 2010-09-09 17:08:32.785473016 -0400
+diff --git a/src/killall5.c b/src/killall5.c
+index a41c23b..b27cfaf 100644
+--- a/src/killall5.c
++++ b/src/killall5.c
@@ -44,6 +44,7 @@
char *Version = "@(#)killall5 2.86 31-Jul-2004 miquels at cistron.nl";
@@ -54,23 +56,34 @@ diff -up sysvinit-2.87dsf/src/killall5.c.omit sysvinit-2.87dsf/src/killall5.c
}
closedir(dir);
-@@ -474,6 +483,15 @@ PIDQ_HEAD *pidof(char *prog)
+@@ -474,6 +484,26 @@ PIDQ_HEAD *pidof(char *prog)
return q;
}
+int matches(PROC *o, PROC *p)
+{
-+ if ((o->argv0 && p->argv0 && !strcmp(o->argv0,p->argv0)) &&
-+ (o->argv1 && p->argv1 && !strcmp(canonicalize_file_name(o->argv1),canonicalize_file_name(p->argv1)))) {
-+ return 1;
++ int ret = 0;
++ char *oargv1, *pargv1;
++ if ((o->argv0 && p->argv0 && !strcmp(o->argv0,p->argv0))) {
++ if (o->argv1 && p->argv1) {
++ if ((oargv1 = canonicalize_file_name(o->argv1)) == NULL)
++ oargv1 = strdup(o->argv1);
++ if ((pargv1 = canonicalize_file_name(p->argv1)) == NULL)
++ pargv1 = strdup(p->argv1);
++ if (! strcmp(oargv1, pargv1)) {
++ ret = 1;
++ }
++ free(oargv1);
++ free(pargv1);
++ }
+ }
-+ return 0;
++ return ret;
+}
+
/* Give usage message and exit. */
void usage(void)
{
-@@ -505,8 +523,7 @@ void nsyslog(int pri, char *fmt, ...)
+@@ -505,8 +533,7 @@ void nsyslog(int pri, char *fmt, ...)
#define PIDOF_SINGLE 0x01
#define PIDOF_OMIT 0x02
@@ -80,7 +93,7 @@ diff -up sysvinit-2.87dsf/src/killall5.c.omit sysvinit-2.87dsf/src/killall5.c
/*
* Pidof functionality.
-@@ -515,7 +532,7 @@ int main_pidof(int argc, char **argv)
+@@ -515,7 +542,7 @@ int main_pidof(int argc, char **argv)
{
PIDQ_HEAD *q;
PROC *p;
@@ -89,7 +102,7 @@ diff -up sysvinit-2.87dsf/src/killall5.c.omit sysvinit-2.87dsf/src/killall5.c
int f;
int first = 1;
int i, oind, opt, flags = 0;
-@@ -523,11 +540,11 @@ int main_pidof(int argc, char **argv)
+@@ -523,11 +550,11 @@ int main_pidof(int argc, char **argv)
struct stat st;
char tmp[512];
@@ -103,7 +116,7 @@ diff -up sysvinit-2.87dsf/src/killall5.c.omit sysvinit-2.87dsf/src/killall5.c
case '?':
nsyslog(LOG_ERR,"invalid options on command line!\n");
closelog();
-@@ -536,9 +553,9 @@ int main_pidof(int argc, char **argv)
+@@ -536,9 +563,9 @@ int main_pidof(int argc, char **argv)
if (geteuid() == 0) chroot_check = 1;
break;
case 'o':
@@ -115,7 +128,7 @@ diff -up sysvinit-2.87dsf/src/killall5.c.omit sysvinit-2.87dsf/src/killall5.c
closelog();
exit(1);
}
-@@ -560,6 +577,9 @@ int main_pidof(int argc, char **argv)
+@@ -560,6 +587,9 @@ int main_pidof(int argc, char **argv)
case 'x':
scripts_too++;
break;
@@ -125,7 +138,7 @@ diff -up sysvinit-2.87dsf/src/killall5.c.omit sysvinit-2.87dsf/src/killall5.c
default:
/* Nothing */
break;
-@@ -584,9 +604,13 @@ int main_pidof(int argc, char **argv)
+@@ -584,9 +614,13 @@ int main_pidof(int argc, char **argv)
spid = 0;
while ((p = get_next_from_pid_q(q))) {
if (flags & PIDOF_OMIT) {
@@ -140,7 +153,7 @@ diff -up sysvinit-2.87dsf/src/killall5.c.omit sysvinit-2.87dsf/src/killall5.c
/*
* On a match, continue with
* the for loop above.
-@@ -625,14 +649,12 @@ int main_pidof(int argc, char **argv)
+@@ -625,14 +659,12 @@ int main_pidof(int argc, char **argv)
@@ -155,7 +168,7 @@ diff -up sysvinit-2.87dsf/src/killall5.c.omit sysvinit-2.87dsf/src/killall5.c
int i, oind, omit = 0;
int sig = SIGKILL;
-@@ -653,7 +675,7 @@ int main(int argc, char **argv)
+@@ -653,7 +685,7 @@ int main(int argc, char **argv)
return main_pidof(argc, argv);
/* Right, so we are "killall". */
@@ -164,7 +177,7 @@ diff -up sysvinit-2.87dsf/src/killall5.c.omit sysvinit-2.87dsf/src/killall5.c
opid[oind] = 0;
if (argc > 1) {
-@@ -661,10 +683,10 @@ int main(int argc, char **argv)
+@@ -661,10 +693,10 @@ int main(int argc, char **argv)
if (argv[i][0] == '-') (argv[i])++;
if (argv[i][0] == 'o') {
if (++i >= argc) usage();
More information about the scm-commits
mailing list