about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@zsh.org>2017-05-11 17:33:30 +0100
committerPeter Stephenson <pws@zsh.org>2017-05-11 17:33:30 +0100
commit4bb81eefbd2a0093d0d3c1b9f4aa1de027512834 (patch)
tree190fec71e8b0c6de362bfbe433ba8619eaef242b
parent1caaa933b4589ade4af7716fec650ab7c68c25ae (diff)
downloadzsh-4bb81eefbd2a0093d0d3c1b9f4aa1de027512834.tar.gz
zsh-4bb81eefbd2a0093d0d3c1b9f4aa1de027512834.tar.xz
zsh-4bb81eefbd2a0093d0d3c1b9f4aa1de027512834.zip
41096: Don't assume null termination copying string.
At this point the string may contain embedded nulls or not have
a null termination at all.

Also, as we always have the length memcpy() is more efficient.
-rw-r--r--ChangeLog5
-rw-r--r--Src/string.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index ed4b9972d..670fc9d89 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-05-11  Peter Stephenson  <p.stephenson@samsung.com>
+
+	* 41096: Src/string.c: Fix dupstring_wlen() for unmetafied
+	string.  It's not safe to assume null termination.
+
 2017-05-09  Peter Stephenson  <p.w.stephenson@ntlworld.com>
 
 	* unposted: Test/D02glob.ztst: Adding comment to test changed
diff --git a/Src/string.c b/Src/string.c
index a8da14fe0..9e14ef949 100644
--- a/Src/string.c
+++ b/Src/string.c
@@ -52,7 +52,8 @@ dupstring_wlen(const char *s, unsigned len)
     if (!s)
 	return NULL;
     t = (char *) zhalloc(len + 1);
-    strcpy(t, s);
+    memcpy(t, s, len);
+    t[len] = '\0';
     return t;
 }