Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Please login to access the resource
home:illuusio
chkrootkit
chkrootkit-utmpchk.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File chkrootkit-utmpchk.patch of Package chkrootkit
diff -Nur chkrootkit-0.57-orig/chkutmp.c chkrootkit-0.57/chkutmp.c --- chkrootkit-0.57-orig/chkutmp.c 2022-06-17 01:33:18.000000000 +0200 +++ chkrootkit-0.57/chkutmp.c 2023-02-12 12:56:58.230640323 +0100 @@ -44,7 +44,6 @@ #endif #include <ctype.h> -#define MAXREAD 1024 #define MAXBUF 4096 #define MAXLENGTH 256 #define UT_PIDSIZE 12 @@ -59,13 +58,13 @@ #endif struct ps_line { - char ps_tty[UT_LINESIZE]; - char ps_user[UT_NAMESIZE]; - char ps_args[MAXLENGTH]; + char ps_tty[UT_LINESIZE+2]; + char ps_user[UT_NAMESIZE+2]; + char ps_args[MAXLENGTH+2]; int ps_pid; }; struct utmp_line { - char ut_tty[UT_LINESIZE]; + char ut_tty[UT_LINESIZE+2]; int ut_pid; int ut_type; }; @@ -79,7 +78,9 @@ int fetchps(struct ps_line *psl_p) { FILE *ps_fp; - char line[MAXREAD + 1], pid[UT_PIDSIZE]; + char *line = NULL; + size_t linelen = 0; + char pid[UT_PIDSIZE+2]; char *s, *d; struct ps_line *curp = &psl_p[0]; struct ps_line *endp = &psl_p[MAXBUF-1]; @@ -87,8 +88,8 @@ i = 0; if ((ps_fp = (popen(cmd[PS_CMD], "r"))) != NULL) { - fgets(line, MAXREAD, ps_fp); /* skip header */ - while (fgets(line, MAXREAD, ps_fp)) { + getline(&line, &linelen, ps_fp); /* skip header */ + while (getline(&line, &linelen, ps_fp) != -1) { s = line; if (*s != '\?' && curp <= endp) { /* only interested in lines that * have a tty */ @@ -99,7 +100,7 @@ while (isspace(*s)) /* skip spaces */ s++; d = pid; - for (x = 0; (!isspace(*s)) && (*d++ = *s++) && x <= UT_LINESIZE; x++) /* grab pid */ + for (x = 0; (!isspace(*s)) && (*d++ = *s++) && x <= UT_PIDSIZE; x++) /* grab pid */ ; *d = '\0'; curp->ps_pid = atoi(pid); @@ -114,17 +115,19 @@ s++; for (x = 0; (*d++ = *s++) && x <= MAXLENGTH; x++) /* cmd + args */ ; + *d = '\0'; i++; curp++; /* if we didn't read the line, skip the rest */ line_length = strlen(line); while (!(line_length == 0 || line[line_length -1] == '\n')) { - fgets(line, MAXREAD, ps_fp); + fgets(line, 1024, ps_fp); line_length = strlen(line); } } } pclose(ps_fp); + free(line); } else { fprintf(stderr, "\nfailed running 'ps' !\n"); exit(EXIT_FAILURE);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor