meminfo-writer: ensure we do not write outside our buffer

Reading the max size would cause a NUL to be written after
the buffer, while an error would cause one to be written
before it.
release2
Vincent Penquerc'h 11 years ago committed by Marek Marczykowski-Górecki
parent 2758d2a1d3
commit e6c29bbae1

@ -163,17 +163,31 @@ int main(int argc, char **argv)
}
if (argc == 3) {
/* if not waiting for signal, fork after first info written to xenstore */
n = pread(fd, buf, sizeof(buf), 0);
n = pread(fd, buf, sizeof(buf)-1, 0);
if (n < 0) {
perror("pread");
exit(1);
}
buf[n] = 0;
meminfo_data = parse(buf);
if (meminfo_data)
send_to_qmemman(xs, meminfo_data);
if (fork() > 0)
n = fork();
if (n < 0) {
perror("fork");
exit(1);
}
if (n > 0)
exit(0);
usleep(delay);
}
for (;;) {
n = pread(fd, buf, sizeof(buf), 0);
n = pread(fd, buf, sizeof(buf)-1, 0);
if (n < 0) {
perror("pread");
exit(1);
}
buf[n] = 0;
meminfo_data = parse(buf);
if (meminfo_data)

Loading…
Cancel
Save