We normally wouldn't close 'fd', and as 'buf' might not have
had a nul, strstr could have overrun it.
Signed-off-by: NeilBrown <neilb@suse.de>
char buf[100];
int fd;
struct mdstat_ent *mdstat;
+ int n;
/* first rule of survival... don't off yourself */
if (pid == getpid())
if (fd < 0)
return;
- if (read(fd, buf, sizeof(buf)) < 0) {
- close(fd);
- return;
- }
+ n = read(fd, buf, sizeof(buf)-1);
+ buf[sizeof(buf)-1] = 0;
+ close(fd);
- if (!strstr(buf, "mdmon"))
+ if (n < 0 || !strstr(buf, "mdmon"))
return;
kill(pid, SIGTERM);