diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-06-18 22:16:28 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-06-18 22:16:28 -0700 |
commit | 7b0433984c9f672fcde3f7cd39d1cdbd60abb6e7 (patch) | |
tree | b0a8cb85b15962e1e138a2c38742da980903391c | |
parent | 895a74b4352d4fdb0b01e296df90e61255d9c3d9 (diff) | |
download | txr-7b0433984c9f672fcde3f7cd39d1cdbd60abb6e7.tar.gz txr-7b0433984c9f672fcde3f7cd39d1cdbd60abb6e7.tar.bz2 txr-7b0433984c9f672fcde3f7cd39d1cdbd60abb6e7.zip |
* lib.c (mkstring): Fix neglect to null terminate.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | lib.c | 7 |
2 files changed, 8 insertions, 3 deletions
@@ -1,5 +1,9 @@ 2015-06-18 Kaz Kylheku <kaz@kylheku.com> + * lib.c (mkstring): Fix neglect to null terminate. + +2015-06-18 Kaz Kylheku <kaz@kylheku.com> + * lib.c (cat_str): Detect overflow in the total length calculation. @@ -2274,10 +2274,11 @@ val string_utf8(const char *str) val mkstring(val len, val ch) { - size_t nchar = c_num(len) + 1; - wchar_t *str = coerce(wchar_t *, chk_malloc(nchar * sizeof *str)); + size_t l = c_num(len); + wchar_t *str = coerce(wchar_t *, chk_malloc((l + 1) * sizeof *str)); val s = string_own(str); - wmemset(str, c_chr(ch), nchar); + wmemset(str, c_chr(ch), l); + str[l] = 0; s->st.len = len; s->st.alloc = plus(len, one); return s; |