.
OBS-URL: https://build.opensuse.org/package/show/Base:System/sysvinit?expand=0&rev=154
This commit is contained in:
parent
82d65def45
commit
29a282460b
@ -1,4 +1,282 @@
|
||||
--- .#nothing
|
||||
+++ .#nothing 2011-09-01 11:59:52.000000000 +0000
|
||||
@@ -0,0 +1 @@
|
||||
+Please remove if patched
|
||||
--- checkproc.8
|
||||
+++ checkproc.8 2011-10-18 09:29:16.195166916 +0000
|
||||
@@ -17,6 +17,7 @@ Pidofproc \- Checks for a process by exe
|
||||
.HP
|
||||
.B checkproc
|
||||
.RB [ \-vLkNz ]
|
||||
+.RB [ \-x ]
|
||||
.RB [ \-p\ \fIpid_file\fP ]
|
||||
.RB [ \-i\ \fIingnore_file\fP ]
|
||||
.RB [ \-c\ \fIroot\fP ]
|
||||
@@ -30,10 +31,12 @@ Pidofproc \- Checks for a process by exe
|
||||
.B checkproc
|
||||
.B \ \
|
||||
.RB [ \-vk ]
|
||||
+.RB [ \-x ]
|
||||
.I basename_of_executable
|
||||
.HP
|
||||
.B pidofproc
|
||||
.RB [ \-LkNz ]
|
||||
+.RB [ \-x ]
|
||||
.RB [ \-p\ \fIpid_file\fP ]
|
||||
.RB [ \-i\ \fIingnore_file\fP ]
|
||||
.RB [ \-c\ \fIroot\fP ]
|
||||
@@ -47,6 +50,7 @@ Pidofproc \- Checks for a process by exe
|
||||
.B pidofproc
|
||||
.B \ \
|
||||
.RB [ \-k ]
|
||||
+.RB [ \-x ]
|
||||
.I basename_of_executable
|
||||
.SH SYNOPSIS LSB 3.1
|
||||
.HP
|
||||
@@ -250,6 +254,15 @@ are in the zombie state. Without this o
|
||||
handled as not existent because such a process isn't
|
||||
alive but listed in the process table and waits on its
|
||||
parent process.
|
||||
+.TP
|
||||
+.B \-x
|
||||
+Tells
|
||||
+.B checkproc
|
||||
+as well as
|
||||
+.B pidofproc
|
||||
+to use the upto 15 byte long filename name found in
|
||||
+.I /proc/<pid>/stat
|
||||
+to be able to identify scripts overwriting their command line.
|
||||
.PP
|
||||
.\"
|
||||
.SH EXAMPLE
|
||||
--- checkproc.c
|
||||
+++ checkproc.c 2011-10-17 15:41:46.671646382 +0000
|
||||
@@ -60,7 +60,7 @@ int main(int argc, char **argv)
|
||||
posixa = getenv("_POSIX_OPTION_ORDER"); unsetenv("_POSIX_OPTION_ORDER");
|
||||
posixb = getenv("POSIXLY_CORRECT"); unsetenv("POSIXLY_CORRECT");
|
||||
opterr = 0;
|
||||
- while ((c = getopt(argc, argv, "c:kp:nNhqvzLi:")) != -1) {
|
||||
+ while ((c = getopt(argc, argv, "c:kp:nNhqvzLi:x")) != -1) {
|
||||
switch (c) {
|
||||
case 'c':
|
||||
if (optarg && optarg[0] != '-' && !root) {
|
||||
@@ -86,6 +86,9 @@ int main(int argc, char **argv)
|
||||
case 'N':
|
||||
init_nfs();
|
||||
break;
|
||||
+ case 'x':
|
||||
+ flags |= STSCRPT;
|
||||
+ break;
|
||||
case 'z':
|
||||
flags &= ~NZOMBIE;
|
||||
break;
|
||||
--- killproc.8
|
||||
+++ killproc.8 2011-10-18 09:27:22.403146549 +0000
|
||||
@@ -16,6 +16,7 @@ Killproc \- Send signals to processes by
|
||||
.B killproc
|
||||
.RB [ \-vqLN ]
|
||||
.RB [ \-g | -G ]
|
||||
+.RB [ \-x ]
|
||||
.RB [ \-p\ \fIpid_file\fP ]
|
||||
.RB [ \-i\ \fIingnore_file\fP ]
|
||||
.RB [ \-c\ \fIroot\fP ]
|
||||
@@ -269,6 +270,13 @@ Be more verbose.
|
||||
This option list all available signals and some of their
|
||||
synonyms by their number and signal names to standard out.
|
||||
and exits.
|
||||
+.TP
|
||||
+.B \-x
|
||||
+Tells
|
||||
+.B killproc
|
||||
+to use the upto 15 byte long filename name found in
|
||||
+.I /proc/<pid>/stat
|
||||
+to be able to identify scripts overwriting their command line.
|
||||
.\"
|
||||
.SH EXAMPLES
|
||||
.TP
|
||||
--- killproc.c
|
||||
+++ killproc.c 2011-10-17 15:42:52.871147146 +0000
|
||||
@@ -96,7 +96,7 @@ int main(int argc, char **argv)
|
||||
posixa = getenv("_POSIX_OPTION_ORDER"); unsetenv("_POSIX_OPTION_ORDER");
|
||||
posixb = getenv("POSIXLY_CORRECT"); unsetenv("POSIXLY_CORRECT");
|
||||
opterr = 0;
|
||||
- while ((c = getopt(argc, argv, "c:p:gGnNhlvqt:Li:")) != -1) {
|
||||
+ while ((c = getopt(argc, argv, "c:p:gGnNhlvqt:Li:x")) != -1) {
|
||||
switch (c) {
|
||||
case 'c':
|
||||
if (optarg && optarg[0] != '-' && !root) {
|
||||
@@ -135,6 +135,9 @@ int main(int argc, char **argv)
|
||||
case 'N':
|
||||
init_nfs();
|
||||
break;
|
||||
+ case 'x':
|
||||
+ flags |= STSCRPT;
|
||||
+ break;
|
||||
case 'p': /* Changed from -f to -p to fit startproc and LSB */
|
||||
/* Allocate here: address optarg (current *argv) isn't freeable */
|
||||
if (optarg && !pid_file) {
|
||||
--- libinit.c
|
||||
+++ libinit.c 2011-10-18 09:06:23.471646253 +0000
|
||||
@@ -570,13 +570,12 @@ static const char * checkscripts(char* e
|
||||
*/
|
||||
scrpt = (char *)memchr(scrpt, 0, cnt);
|
||||
if (!scrpt || (cnt = len - (++scrpt - ent)) <= 0)
|
||||
- goto out;
|
||||
+ break;
|
||||
if (*scrpt == '/') {
|
||||
ret = scrpt;
|
||||
goto out;
|
||||
}
|
||||
} while (scrpt && cnt > 0);
|
||||
-
|
||||
out:
|
||||
if (scrpt && root) {
|
||||
char *ptr = strdupa(scrpt);
|
||||
@@ -877,8 +876,11 @@ int pidof (const char * inname, const ch
|
||||
continue;
|
||||
|
||||
/* Seek for a script not for a binary */
|
||||
- if (!(scrpt = checkscripts(entry, root, len, d->d_name)))
|
||||
+ if (!(scrpt = checkscripts(entry, root, len, d->d_name))) {
|
||||
+ if (flags & STSCRPT)
|
||||
+ goto risky;
|
||||
continue;
|
||||
+ }
|
||||
|
||||
/* Don't blame our boot scripts having the same name */
|
||||
if ( (flags & (KILL|DAEMON))
|
||||
@@ -1128,7 +1130,7 @@ risky:
|
||||
return -1;
|
||||
}
|
||||
|
||||
- if (!(flags & (KTHREAD|KSHORT))&& isscrpt &&
|
||||
+ if (!(flags & (KTHREAD|KSHORT)) && isscrpt &&
|
||||
(fp = open(proc(buf, "cmdline"), O_PROCMODE)) != -1) {
|
||||
|
||||
char entry[PATH_MAX+1];
|
||||
@@ -1142,15 +1144,18 @@ risky:
|
||||
goto out;
|
||||
|
||||
/* Seek for a script not for a binary */
|
||||
- if (!(scrpt = checkscripts(entry, root, len, buf)))
|
||||
+ if (!(scrpt = checkscripts(entry, root, len, buf))) {
|
||||
+ if (flags & STSCRPT)
|
||||
+ goto nameonly;
|
||||
goto out; /* Nothing found */
|
||||
+ }
|
||||
|
||||
if (scrpt && strcmp(scrpt,fullname) == 0) {
|
||||
do_list(pid,getsession(pid),ignore);
|
||||
goto out; /* Done */
|
||||
}
|
||||
}
|
||||
-
|
||||
+nameonly:
|
||||
if ((fp = open(proc(buf, "stat"), O_PROCMODE)) != -1) {
|
||||
|
||||
char entry[PATH_MAX+1];
|
||||
@@ -1313,7 +1318,7 @@ int check_pids (const char * inname, con
|
||||
|
||||
skip = true; /* No stat entry check needed */
|
||||
}
|
||||
-risky:
|
||||
+ risky:
|
||||
|
||||
if (!(flags & (KTHREAD|KSHORT)) && isscrpt &&
|
||||
(fp = open(proc(pid, "cmdline"), O_PROCMODE)) != -1) {
|
||||
@@ -1332,7 +1337,8 @@ risky:
|
||||
if ((scrpt = checkscripts(entry, root, len, pid))) {
|
||||
if (strcmp(scrpt,fullname) == 0)
|
||||
continue; /* Found */
|
||||
- skip = true; /* No stat entry check needed */
|
||||
+ if (!(flags & STSCRPT))
|
||||
+ skip = true; /* No stat entry check needed */
|
||||
}
|
||||
}
|
||||
|
||||
--- libinit.h
|
||||
+++ libinit.h 2011-10-18 09:13:36.923145552 +0000
|
||||
@@ -106,6 +106,7 @@
|
||||
#define FLWLINK 0x0040
|
||||
#define KSTOP 0x0080
|
||||
#define KBASE 0x0100
|
||||
+#define STSCRPT 0x0200
|
||||
|
||||
#define MAXENV 20
|
||||
#define CMDLLEN MAXNAMLEN /* The string length of /proc/12345/cmdline\0\0 + 1 */
|
||||
@@ -116,6 +117,7 @@
|
||||
#endif
|
||||
#define DEFPIDEXT ".pid"
|
||||
#define DEFPIDLEN 14 /* The string length of /var/run/.pid + 1 */
|
||||
+#define COMM_LEN 15 /* The lenght of the task command name in /proc/<pid>/stat */
|
||||
|
||||
extern char **environ;
|
||||
extern char * newenvp[];
|
||||
@@ -216,10 +218,12 @@ static inline char * base_name ( const c
|
||||
|
||||
static inline char * swap_name ( const char * base )
|
||||
{
|
||||
- size_t len = strlen(base) + 2 + 1;
|
||||
- char *swap = (char*)xmalloc(len);
|
||||
-
|
||||
- return strcat(strcat(strcpy(swap,"("),base),")");
|
||||
+ size_t len = strlen(base);
|
||||
+ char *swap;
|
||||
+ if (len > COMM_LEN)
|
||||
+ len = COMM_LEN;
|
||||
+ swap = (char*)xmalloc(len + 2 + 1);
|
||||
+ return strcat(strncat(strcpy(swap,"("),base, COMM_LEN),")");
|
||||
}
|
||||
|
||||
extern void addnewenv ( const char * name, const char * entry );
|
||||
--- startproc.8
|
||||
+++ startproc.8 2011-10-18 09:28:45.875646247 +0000
|
||||
@@ -18,6 +18,7 @@ Start_daemon \- Start processes identifi
|
||||
.HP
|
||||
.B startproc
|
||||
.RB [ \-fLves ]
|
||||
+.RB [ \-x ]
|
||||
.RB [[ \-n\ ] \fI+/\-<prio>\fP ]
|
||||
.RB [ \- ( t | T )\ \fI<sec>\fP ]
|
||||
.RB [ \-u\ \fIuser\fP ]
|
||||
@@ -32,6 +33,7 @@ Start_daemon \- Start processes identifi
|
||||
.HP
|
||||
.B start_daemon
|
||||
.RB [ \-fLve ]
|
||||
+.RB [ \-x ]
|
||||
.RB [ \-n\ \fI+/\-<prio>\fP ]
|
||||
.RB [ \-u\ \fIuser\fP ]
|
||||
.RB [ \-g\ \fIgroup\fP ]
|
||||
@@ -249,6 +251,15 @@ Sets the user ID of the process to
|
||||
.TP
|
||||
.B \-v
|
||||
Verbose output.
|
||||
+.TP
|
||||
+.B \-x
|
||||
+Tells
|
||||
+.B startproc
|
||||
+as well as
|
||||
+.B start_daemon
|
||||
+to use the upto 15 byte long filename name found in
|
||||
+.I /proc/<pid>/stat
|
||||
+to be able to identify scripts overwriting their command line.
|
||||
.\"
|
||||
.SH EXAMPLE
|
||||
.TP
|
||||
--- startproc.c
|
||||
+++ startproc.c 2011-10-17 15:43:02.443647315 +0000
|
||||
@@ -109,7 +109,7 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
opterr = 0;
|
||||
- while ((c = getopt(argc, argv, "+c:edp:l:hqvsu:g:t:n:fLi:T:wW:")) != -1) { /* `+' is POSIX correct */
|
||||
+ while ((c = getopt(argc, argv, "+c:edp:l:hqvsu:g:t:n:fLi:T:wW:x")) != -1) { /* `+' is POSIX correct */
|
||||
switch (c) {
|
||||
case 'v':
|
||||
quiet = 0;
|
||||
@@ -127,6 +127,9 @@ int main(int argc, char **argv)
|
||||
dialog = true;
|
||||
seconds = 15;
|
||||
break;
|
||||
+ case 'x':
|
||||
+ flags |= STSCRPT;
|
||||
+ break;
|
||||
case 'p': /* Former option -f */
|
||||
if (force)
|
||||
warn("option -p does not work in force mode\n");
|
||||
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 18 09:30:36 UTC 2011 - werner@suse.de
|
||||
|
||||
- Add option -x to be able to identify scripts overwriting their
|
||||
command line (bnc#723708)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Oct 17 09:08:36 UTC 2011 - werner@suse.de
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user