summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbosk <>2010-07-16 13:01:15 +0000
committerbosk <>2010-07-16 13:01:15 +0000
commitefdcd3809052144ecc90c1c07a0f9f93d09c1870 (patch)
treeecb55e4fbe235896bc41a2eae80de9814856c0cd
parent77556f1d93574ad38c11b1dbe47027c509c6c0a4 (diff)
downloadmake-efdcd3809052144ecc90c1c07a0f9f93d09c1870.tar.gz
Fix buffer overrun in concat().
-rw-r--r--ChangeLog4
-rw-r--r--misc.c8
2 files changed, 12 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 12ef1c4b..a4d06007 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-07-16 Boris Kolpackov <boris@codesynthesis.com>
+
+ * misc.c (concat): Fix buffer overrun.
+
2010-07-12 Paul Smith <psmith@gnu.org>
Update copyrights to add 2010.
diff --git a/misc.c b/misc.c
index f4806acb..39c2835e 100644
--- a/misc.c
+++ b/misc.c
@@ -202,6 +202,14 @@ concat (num, va_alist)
VA_END (args);
+ /* Get some more memory if we don't have enough space for the
+ terminating '\0'. */
+ if (ri == rlen)
+ {
+ rlen = (rlen ? rlen : 60) * 2;
+ result = xrealloc (result, rlen);
+ }
+
result[ri] = '\0';
return result;