diff --git a/src/common/util.c b/src/common/util.c index 8ee64f4522..87f6aa5f18 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -1889,8 +1889,8 @@ read_file_to_str(const char *filename, int flags, struct stat *stat_out) * the start of the next line. If we run out of data, return a pointer to the * end of the string. If we encounter an error, return NULL. * - * NOTE: We modify line as we parse it, by inserting NULs to terminate - * the key and value. + * NOTE: We modify *line as we parse it, by inserting NULs + * to terminate the key and value. */ char * parse_line_from_str(char *line, char **key_out, char **value_out) @@ -1923,9 +1923,10 @@ parse_line_from_str(char *line, char **key_out, char **value_out) while (*line && !TOR_ISSPACE(*line) && *line != '#') ++line; - /* Skip until the value */ + /* Skip until the value, writing nuls so key will be nul-terminated */ while (*line == ' ' || *line == '\t') *line++ = '\0'; + val = line; /* Find the end of the line. */