diff --git a/src/cfgparse.y b/src/cfgparse.y index 10ca48cc..f1843312 100644 --- a/src/cfgparse.y +++ b/src/cfgparse.y @@ -358,12 +358,14 @@ void parse_file(const char *f) { /* get key/value for this variable */ char *v_key = value, *v_value; - if ((v_value = strstr(value, " ")) == NULL && - (v_value = strstr(value, "\t")) == NULL) { + if (strstr(value, " ") == NULL && strstr(value, "\t") == NULL) { ELOG("Malformed variable assignment, need a value\n"); continue; } + if (!(v_value = strstr(value, " "))) + v_value = strstr(value, "\t"); + *(v_value++) = '\0'; struct Variable *new = scalloc(sizeof(struct Variable)); @@ -388,6 +390,7 @@ void parse_file(const char *f) { int extra = (strlen(current->value) - strlen(current->key)); char *next; for (next = bufcopy; + (bufcopy + (next - bufcopy)) < (buf + stbuf.st_size) && (next = strcasestr(bufcopy + (next - bufcopy), current->key)) != NULL; next += strlen(current->key)) { *next = '_';