]> granicus.if.org Git - yasm/commitdiff
Fix default filename buffer overflow.
authorPeter Johnson <peter@tortall.net>
Sat, 23 Jun 2007 00:19:57 +0000 (00:19 -0000)
committerPeter Johnson <peter@tortall.net>
Sat, 23 Jun 2007 00:19:57 +0000 (00:19 -0000)
Note: this is not a security issue.

Noticed by: Mike Frysinger <vapier@gentoo.org>

svn path=/trunk/yasm/; revision=1884

frontends/yasm/yasm.c

index 2aaa90e13d834ac681d22ef695ba9f2e58d6058e..775717428de21776659c7a23cee33e2c69966a4e 100644 (file)
@@ -1135,9 +1135,17 @@ replace_extension(const char *orig, /*@null@*/ const char *ext,
                   const char *def)
 {
     char *out, *outext;
+    size_t deflen, outlen;
 
     /* allocate enough space for full existing name + extension */
-    out = yasm_xmalloc(strlen(orig)+(ext ? (strlen(ext)+2) : 1));
+    outlen = strlen(orig) + 2;
+    if (ext)
+        outlen += strlen(ext) + 1;
+    deflen = strlen(def) + 1;
+    if (outlen < deflen)
+        outlen = deflen;
+    out = yasm_xmalloc(outlen);
+
     strcpy(out, orig);
     outext = strrchr(out, '.');
     if (outext) {