Try to fix reading freed memory in eval.c.

This occurred when the null term was reached - the token was freed, but
no error was thrown (it's just the end of the string), so the program
attempted to increment the index using freed token data.
This commit is contained in:
Danila Fedorin 2017-02-26 22:35:45 -08:00
parent eb4204fe76
commit 2f65eda7bd

View File

@ -209,7 +209,7 @@ liblex_result eval_all(char* string, int index, eval_config* config, ll* matches
result = ll_append(matches, new_match) == LIBDS_SUCCESS ? LIBLEX_SUCCESS : LIBLEX_MALLOC; result = ll_append(matches, new_match) == LIBDS_SUCCESS ? LIBLEX_SUCCESS : LIBLEX_MALLOC;
} }
} }
if(result == LIBLEX_SUCCESS){ if(result == LIBLEX_SUCCESS && string[index] != '\0'){
index += new_match->to - new_match->from; index += new_match->to - new_match->from;
} }
} else { } else {