diff options
author | Ian Fan <ianfan0@gmail.com> | 2018-09-22 10:57:22 +0100 |
---|---|---|
committer | Ian Fan <ianfan0@gmail.com> | 2018-09-22 11:02:47 +0100 |
commit | a4d346627cc661f32bc7fb65a43ff19d48b50a96 (patch) | |
tree | 9fe3ee50c17a53266183e1e4643bb149c6af6c86 | |
parent | b148da848ae9075822cd8ddd743532f3ce78f923 (diff) |
swaybar: explicitly check return value of getdelim
This prevents an signed-to-unsigned conversion error on buffer_index if
getdelim fails and returns -1, which caused swaybar to try to search the
header for the array and immediately failing
-rw-r--r-- | swaybar/status_line.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/swaybar/status_line.c b/swaybar/status_line.c index 401bf6f6..48b43248 100644 --- a/swaybar/status_line.c +++ b/swaybar/status_line.c @@ -67,9 +67,13 @@ bool status_handle_readable(struct status_line *status) { wl_list_init(&status->blocks); status->tokener = json_tokener_new(); - status->buffer_index = getdelim(&status->buffer, - &status->buffer_size, EOF, status->read); - return i3bar_handle_readable(status); + read_bytes = getdelim(&status->buffer, &status->buffer_size, EOF, status->read); + if (read_bytes > 0) { + status->buffer_index = read_bytes; + return i3bar_handle_readable(status); + } else { + return false; + } } wlr_log(WLR_DEBUG, "Using text protocol."); |