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. */