[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