Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:15-SP2
procps.10046
procps-ng-3.3.8-readeof.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File procps-ng-3.3.8-readeof.patch of Package procps.10046
--- proc/readproc.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) --- proc/readproc.c +++ proc/readproc.c 2018-06-05 08:54:06.408030693 +0000 @@ -669,7 +669,7 @@ static int file2str(const char *director else ub->buf = xcalloc((ub->siz = buffGRW)); len = snprintf(path, sizeof path, "%s/%s", directory, what); if (len <= 0 || (size_t)len >= sizeof path) return -1; - if (-1 == (fd = open(path, O_RDONLY, 0))) return -1; + if (-1 == (fd = open(path, O_RDONLY, O_NOATIME))) return -1; while (0 < (num = read(fd, ub->buf + tot_read, ub->siz - tot_read))) { tot_read += num; if (tot_read < ub->siz) break; @@ -689,25 +689,25 @@ static int file2str(const char *director static char** file2strvec(const char* directory, const char* what) { char buf[2048]; /* read buf bytes at a time */ char *p, *rbuf = 0, *endbuf, **q, **ret, *strp; - int fd, tot = 0, n, c, end_of_file = 0; - int align; + int fd, c, end_of_file = 0; + ssize_t n, align, tot = 0; const int len = snprintf(buf, sizeof buf, "%s/%s", directory, what); if(len <= 0 || (size_t)len >= sizeof buf) return NULL; - fd = open(buf, O_RDONLY, 0); + fd = open(buf, O_RDONLY, O_NOATIME); if(fd==-1) return NULL; /* read whole file into a memory buffer, allocating as we go */ while ((n = read(fd, buf, sizeof buf - 1)) >= 0) { - if (n < (int)(sizeof buf - 1)) + if (n < sizeof buf - 1) end_of_file = 1; - if (n <= 0 && tot <= 0) { /* nothing read now, nothing read before */ + if (n <= 0 && tot <= 0) /* nothing read now, nothing read before */ break; /* process died between our open and read */ - } + /* ARG_LEN is our guesstimated median length of a command-line argument or environment variable (the minimum is 1, the maximum is 131072) */ #define ARG_LEN 64 - if (tot >= INT_MAX / (ARG_LEN + (int)sizeof(char*)) * ARG_LEN - n) { + if (tot >= INT_MAX / (ARG_LEN + sizeof(char*)) * ARG_LEN - n) { end_of_file = 1; /* integer overflow: null-terminate and break */ n = 0; /* but tot > 0 */ } @@ -735,7 +735,7 @@ static char** file2strvec(const char* di c = sizeof(char*); /* one extra for NULL term */ for (p = rbuf; p < endbuf; p++) { if (!*p || *p == '\n') { - if (c >= INT_MAX - (tot + (int)sizeof(char*) + align)) break; + if (c >= INT_MAX - (tot + sizeof(char*) + align)) break; c += sizeof(char*); } if (*p == '\n') @@ -747,7 +747,7 @@ static char** file2strvec(const char* di q = ret = (char**) (endbuf+align); /* ==> free(*ret) to dealloc */ for (strp = p = rbuf; p < endbuf; p++) { if (!*p) { /* NUL char implies that */ - if (c < 2 * (int)sizeof(char*)) break; + if (c < 2 * sizeof(char*)) break; c -= sizeof(char*); *q++ = strp; /* point ptrs to the strings */ strp = p+1; /* next string -> next char */
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