diff options
author | Christian Göttsche <cgzones@googlemail.com> | 2020-11-16 16:50:08 +0100 |
---|---|---|
committer | Christian Göttsche <cgzones@googlemail.com> | 2020-11-17 13:06:31 +0100 |
commit | f38af725c21e4beab01070ffe73180ca0549129e (patch) | |
tree | ded1a73be9b3acf5ac2339220ec606db050cb3f4 /linux/SystemdMeter.c | |
parent | fec9af4e6fd7e45e4cb623a84c34b92d3e506b3f (diff) |
Silence theoretical memory leak
In practice systemctl should never return multiple SystemState= lines.
Diffstat (limited to 'linux/SystemdMeter.c')
-rw-r--r-- | linux/SystemdMeter.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/linux/SystemdMeter.c b/linux/SystemdMeter.c index 368d5cca..ef88275f 100644 --- a/linux/SystemdMeter.c +++ b/linux/SystemdMeter.c @@ -206,8 +206,10 @@ static void updateViaExec(void) { while (fgets(lineBuffer, sizeof(lineBuffer), commandOutput)) { if (String_startsWith(lineBuffer, "SystemState=")) { char* newline = strchr(lineBuffer + strlen("SystemState="), '\n'); - if (newline) + if (newline) { *newline = '\0'; + } + free(systemState); systemState = xStrdup(lineBuffer + strlen("SystemState=")); } else if (String_startsWith(lineBuffer, "NFailedUnits=")) { nFailedUnits = strtoul(lineBuffer + strlen("NFailedUnits="), NULL, 10); |