all repos — slstatus @ b1e7c40b2103a4850340044fac685954e76e954b

my build of slstatus (tools.suckless.org/slstatus/)

Fixed out of boundary write on long lines.

The terminating nul character ('\0') could be written outside the boundary of
the buffer which is used to read characters. If "sizeof(buffer)" characters
are read, the resulting value must not be used as index, because that's an off
by one.

Read sizeof(buffer)-1 bytes instead.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
Tobias Stoeckmann tobias@stoeckmann.org
Sun, 02 Apr 2017 13:12:03 +0200
commit

b1e7c40b2103a4850340044fac685954e76e954b

parent

cceeec0efada64579525b90b30e5597cd24dfc6c

1 files changed, 6 insertions(+), 6 deletions(-)

jump to
M slstatus.cslstatus.c

@@ -447,9 +447,9 @@ if (fp == NULL) {

warn("Failed to get command output for %s", cmd); return smprintf("%s", UNKNOWN_STR); } - fgets(buf, sizeof(buf), fp); + fgets(buf, sizeof(buf) - 1, fp); pclose(fp); - buf[sizeof(buf)] = '\0'; + buf[sizeof(buf) - 1] = '\0'; if ((nlptr = strstr(buf, "\n")) != NULL) { nlptr[0] = '\0';

@@ -473,7 +473,7 @@ warn("Failed to open file /proc/meminfo");

return smprintf("%s", UNKNOWN_STR); } - if ((bytes_read = fread(buf, sizeof(char), sizeof(buf), fp)) == 0) { + if ((bytes_read = fread(buf, sizeof(char), sizeof(buf) - 1, fp)) == 0) { warn("swap_free: read error"); fclose(fp); return smprintf("%s", UNKNOWN_STR);

@@ -510,7 +510,7 @@ warn("Failed to open file /proc/meminfo");

return smprintf("%s", UNKNOWN_STR); } - if ((bytes_read = fread(buf, sizeof(char), sizeof(buf), fp)) == 0) { + if ((bytes_read = fread(buf, sizeof(char), sizeof(buf) - 1, fp)) == 0) { warn("swap_perc: read error"); fclose(fp); return smprintf("%s", UNKNOWN_STR);

@@ -551,7 +551,7 @@ if (fp == NULL) {

warn("Failed to open file /proc/meminfo"); return smprintf("%s", UNKNOWN_STR); } - if ((bytes_read = fread(buf, sizeof(char), sizeof(buf), fp)) == 0) { + if ((bytes_read = fread(buf, sizeof(char), sizeof(buf) - 1, fp)) == 0) { warn("swap_total: read error"); fclose(fp); return smprintf("%s", UNKNOWN_STR);

@@ -582,7 +582,7 @@ if (fp == NULL) {

warn("Failed to open file /proc/meminfo"); return smprintf("%s", UNKNOWN_STR); } - if ((bytes_read = fread(buf, sizeof(char), sizeof(buf), fp)) == 0) { + if ((bytes_read = fread(buf, sizeof(char), sizeof(buf) - 1, fp)) == 0) { warn("swap_used: read error"); fclose(fp); return smprintf("%s", UNKNOWN_STR);