From e8028be8390c3daeadf5775d2e1c21c644ff4ee4 Mon Sep 17 00:00:00 2001 From: Nihal Jere Date: Fri, 18 Mar 2022 20:21:56 -0500 Subject: [PATCH] swaynag: improve robustness when loading config --- swaynag/config.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/swaynag/config.c b/swaynag/config.c index 5ff00bdbe..ac5f31c0b 100644 --- a/swaynag/config.c +++ b/swaynag/config.c @@ -422,24 +422,17 @@ int swaynag_load_config(char *path, struct swaynag *swaynag, list_t *types) { if (line[0] == '[') { char *close = strchr(line, ']'); - if (!close) { - fprintf(stderr, "Closing bracket not found on line %d\n", - line_number); + if (!close || close != &line[nread - 2] || nread <= 3) { + fprintf(stderr, "Line %d is malformed\n", line_number); result = 1; break; } - char *name = calloc(1, close - line); - if (!name) { - perror("calloc"); - return EXIT_FAILURE; - } - strncat(name, line + 1, close - line - 1); - type = swaynag_type_get(types, name); + *close = '\0'; + type = swaynag_type_get(types, &line[1]); if (!type) { - type = swaynag_type_new(name); + type = swaynag_type_new(&line[1]); list_add(types, type); } - free(name); } else { char *flag = malloc(nread + 3); if (!flag) {