[Pkg-sysvinit-commits] r221 - sysvinit/trunk/src
Thomas Hood
jdthood-guest at costa.debian.org
Wed Nov 23 19:11:29 UTC 2005
Author: jdthood-guest
Date: 2005-11-23 19:11:28 +0000 (Wed, 23 Nov 2005)
New Revision: 221
Modified:
sysvinit/trunk/src/killall5.c
Log:
Don't compare basename with basename. Only compare fullname with fullname and fullname with basename. (Do for argv1 comparison too.) Also, add a comment explaining the algorithm.
Modified: sysvinit/trunk/src/killall5.c
===================================================================
--- sysvinit/trunk/src/killall5.c 2005-11-23 18:53:19 UTC (rev 220)
+++ sysvinit/trunk/src/killall5.c 2005-11-23 19:11:28 UTC (rev 221)
@@ -411,18 +411,32 @@
if (!foundone) for (p = plist; p; p = p->next) {
ok = 0;
- /* Compare name */
+ /* matching nonmatching
+ * proc name prog name prog name
+ * --- ----------- ------------
+ * b b, p/b, q/b
+ * p/b b, p/b q/b
+ *
+ * Algorithm: Match if:
+ * cmd = arg
+ * or cmd = base(arg)
+ * or base(cmd) = arg
+ *
+ * Specifically, do not match just because base(cmd) = base(arg)
+ * as was done in earlier versions of this program, since this
+ * allows /aaa/foo to match /bbb/foo .
+ */
ok |=
(p->argv0 && strcmp(p->argv0, prog) == 0)
|| (p->argv0 && s != prog && strcmp(p->argv0, s) == 0)
|| (p->argv0base && strcmp(p->argv0base, prog) == 0);
/* For scripts, compare argv[1] as well. */
- if (scripts_too && p->argv1 &&
- !strncmp(p->statname, p->argv1base, STATNAMELEN)) {
+ if (scripts_too && !strncmp(p->statname, p->argv1base, STATNAMELEN)) {
ok |=
- (strcmp(p->argv1, prog) == 0)
- || (strcmp(p->argv1base, s) == 0);
+ (p->argv1 && strcmp(p->argv1, prog) == 0)
+ || (p->argv1 && s != prog && strcmp(p->argv1, s) == 0)
+ || (p->argv1base && strcmp(p->argv1base, prog) == 0);
}
/*
More information about the Pkg-sysvinit-commits
mailing list