chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
1d01042
)
bootchart: make sure that every read buffer is null terminated
author
Lukas Nykryn
<lnykryn@redhat.com>
Thu, 10 Jan 2013 13:36:42 +0000
(14:36 +0100)
committer
Kay Sievers
<kay@vrfy.org>
Thu, 10 Jan 2013 14:22:58 +0000
(15:22 +0100)
src/bootchart/log.c
patch
|
blob
|
history
diff --git
a/src/bootchart/log.c
b/src/bootchart/log.c
index eda001a20e5e333676943c8bc15420c2ac04c150..78f0cab17833c4015f9117bbb67a6caf9fc9c1a6 100644
(file)
--- a/
src/bootchart/log.c
+++ b/
src/bootchart/log.c
@@
-182,8
+182,10
@@
schedstat_next:
if (e_fd) {
n = pread(e_fd, buf, sizeof(buf) - 1, 0);
if (e_fd) {
n = pread(e_fd, buf, sizeof(buf) - 1, 0);
- if (n > 0)
+ if (n > 0) {
+ buf[n] = '\0';
entropy_avail[sample] = atoi(buf);
entropy_avail[sample] = atoi(buf);
+ }
}
}
}
}
@@
-256,6
+258,7
@@
schedstat_next:
close(ps->sched);
continue;
}
close(ps->sched);
continue;
}
+ buf[s] = '\0';
if (!sscanf(buf, "%s %*s %*s", key))
continue;
if (!sscanf(buf, "%s %*s %*s", key))
continue;
@@
-337,8
+340,8
@@
schedstat_next:
if (ps->schedstat == -1)
continue;
}
if (ps->schedstat == -1)
continue;
}
-
- if (
pread(ps->schedstat, buf, sizeof(buf) - 1, 0)
<= 0) {
+ s = pread(ps->schedstat, buf, sizeof(buf) - 1, 0);
+ if (
s
<= 0) {
/* clean up our file descriptors - assume that the process exited */
close(ps->schedstat);
if (ps->sched)
/* clean up our file descriptors - assume that the process exited */
close(ps->schedstat);
if (ps->sched)
@@
-347,6
+350,8
@@
schedstat_next:
// fclose(ps->smaps);
continue;
}
// fclose(ps->smaps);
continue;
}
+ buf[s] = '\0';
+
if (!sscanf(buf, "%s %s %*s", rt, wt))
continue;
if (!sscanf(buf, "%s %s %*s", rt, wt))
continue;
@@
-401,7
+406,8
@@
catch_rename:
if (ps->sched == -1)
continue;
}
if (ps->sched == -1)
continue;
}
- if (pread(ps->sched, buf, sizeof(buf) - 1, 0) <= 0) {
+ s = pread(ps->sched, buf, sizeof(buf) - 1, 0);
+ if (s <= 0) {
/* clean up file descriptors */
close(ps->sched);
if (ps->schedstat)
/* clean up file descriptors */
close(ps->sched);
if (ps->schedstat)
@@
-410,6
+416,7
@@
catch_rename:
// fclose(ps->smaps);
continue;
}
// fclose(ps->smaps);
continue;
}
+ buf[s] = '\0';
if (!sscanf(buf, "%s %*s %*s", key))
continue;
if (!sscanf(buf, "%s %*s %*s", key))
continue;