Browse files

Fix parsing of linux memory

If process name contains a space, this parsing fails for no good reason.
  • Loading branch information...
1 parent 60b5bca commit ddb06cb552d7ccd64205c4ae54b6165353d4452e Vitali Lovich committed with ry Jul 16, 2010
Showing with 16 additions and 1 deletion.
  1. +16 −1 src/platform_linux.cc
View
17 src/platform_linux.cc
@@ -47,11 +47,26 @@ int OS::GetMemory(size_t *rss, size_t *vsize) {
int itmp;
char ctmp;
size_t page_size = getpagesize();
+ char *cbuf;
+ bool foundExeEnd;
/* PID */
if (fscanf(f, "%d ", &itmp) == 0) goto error; /* coverity[secure_coding] */
/* Exec file */
- if (fscanf (f, "%s ", buf) == 0) goto error; /* coverity[secure_coding] */
+ cbuf = buf;
+ foundExeEnd = false;
+ if (fscanf (f, "%c", cbuf++) == 0) goto error; // (
+ while (1) {
+ if (fscanf(f, "%c", cbuf) == 0) goto error;
+ if (*cbuf == ')') {
+ foundExeEnd = true;
+ } else if (foundExeEnd && *cbuf == ' ') {
+ *cbuf = 0;
+ break;
+ }
+
+ cbuf++;
+ }
/* State */
if (fscanf (f, "%c ", &ctmp) == 0) goto error; /* coverity[secure_coding] */
/* Parent process */

0 comments on commit ddb06cb

Please sign in to comment.