address warnings from GCC's UB sanitizer

Running with CC='gcc-mp-8 -fsanitize=undefined' revealed Undefined
Behaviors.
https://lists.gnu.org/archive/html/bison-patches/2019-03/msg00008.html

* src/state.c (errs_new): Don't call memcpy with NULL as source.
* src/location.c (add_column_width): Don't assume that the column
argument is nonnegative: the scanner sometimes "backtracks" (e.g., see
ROLLBACK_CURRENT_TOKEN and DEPRECATED) in which case we can have
negative column numbers (temporarily).
Found in test 3 (Invalid inputs).
This commit is contained in:
Akim Demaille
2019-03-12 19:09:10 +01:00
parent f6e38d7ac9
commit 35add841ee
2 changed files with 9 additions and 17 deletions

View File

@@ -77,7 +77,8 @@ errs_new (int num, symbol **tokens)
size_t symbols_size = num * sizeof *tokens;
errs *res = xmalloc (offsetof (errs, symbols) + symbols_size);
res->num = num;
memcpy (res->symbols, tokens, symbols_size);
if (tokens)
memcpy (res->symbols, tokens, symbols_size);
return res;
}