From c54a8ebdc993aa3bf259fa7ab85a0f077a70040c Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Thu, 2 Feb 2017 15:42:25 +0200 Subject: Improve memory hygiene in set_profile_text. --- ChangeLog | 6 ++++++ awkgram.c | 3 ++- awkgram.y | 3 ++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8a0dfc3f..f9e1cef2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2017-02-02 Arnold D. Robbins + + * awkgram.y (set_profile_next): Allocate an extra byte at the + end for the NUL in case we add a sign. Thanks to Andrew Schorr + for making me look at this code. + 2017-02-01 Arnold D. Robbins * builtin.c (mbc_char_count): Remove spurious multiplies by diff --git a/awkgram.c b/awkgram.c index 5b55cf51..fb6e4825 100644 --- a/awkgram.c +++ b/awkgram.c @@ -8713,7 +8713,8 @@ set_profile_text(NODE *n, const char *str, size_t len) { if (do_pretty_print) { // extra byte in case need to add minus sign in negate_num - n->stptr = estrdup(str, len + 1); + // and another one for the \0 at the end + n->stptr = estrdup(str, len + 2); n->stptr[len] = '\0'; n->stlen = len; // Set STRCUR and n->stfmt for use when profiling diff --git a/awkgram.y b/awkgram.y index 541cebf1..a9e8f9aa 100644 --- a/awkgram.y +++ b/awkgram.y @@ -6293,7 +6293,8 @@ set_profile_text(NODE *n, const char *str, size_t len) { if (do_pretty_print) { // extra byte in case need to add minus sign in negate_num - n->stptr = estrdup(str, len + 1); + // and another one for the \0 at the end + n->stptr = estrdup(str, len + 2); n->stptr[len] = '\0'; n->stlen = len; // Set STRCUR and n->stfmt for use when profiling -- cgit v1.2.3