From nobody@FreeBSD.org  Thu Nov 25 11:43:03 2004
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 65F5C16A4CE
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 25 Nov 2004 11:43:03 +0000 (GMT)
Received: from www.freebsd.org (www.freebsd.org [216.136.204.117])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 53E3F43D66
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 25 Nov 2004 11:43:03 +0000 (GMT)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.13.1/8.13.1) with ESMTP id iAPBh3AR097795
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 25 Nov 2004 11:43:03 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.13.1/8.13.1/Submit) id iAPBh33S097794;
	Thu, 25 Nov 2004 11:43:03 GMT
	(envelope-from nobody)
Message-Id: <200411251143.iAPBh33S097794@www.freebsd.org>
Date: Thu, 25 Nov 2004 11:43:03 GMT
From: Max Okumoto <okumoto@ucsd.edu>
To: freebsd-gnats-submit@FreeBSD.org
Subject: Bug in archive code (string is truncated)
X-Send-Pr-Version: www-2.3

>Number:         74368
>Category:       bin
>Synopsis:       [patch] arch.c: Bug in archive code (string is truncated)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Nov 25 11:50:25 GMT 2004
>Closed-Date:    Mon Nov 29 16:24:51 GMT 2004
>Last-Modified:  Mon Nov 29 16:24:51 GMT 2004
>Originator:     Max Okumoto
>Release:        5.2.1
>Organization:
Univ Calif San Diego
>Environment:
FreeBSD oecpc11.ucsd.edu 5.2.1-RELEASE-p12 FreeBSD 5.2.1-RELEASE-p12 #0: Thu Nov 25 01:31:26 PST 2004     root@oecpc11.ucsd.edu:/usr/obj/usr/src/sys/GENERIC  i386

>Description:
Date: 2004/11/14 20:13:12
Author: dillon
Log:
Fix an inverted conditional which could lead to nameBuf being truncated in the later snprintf().

Noticed-by: Max Okumoto <okumoto@home>
    
Members:
        arch.c:1.11->1.12

>How-To-Repeat:

>Fix:
Apply patch.

diff -ru  fbsd-src/make/arch.c dfly-src/make/arch.c
--- arch.c      Mon Nov 15 20:39:53 2004
+++ arch.c      Mon Nov 15 20:39:56 2004
@@ -341,15 +339,17 @@
            char  *member;
            size_t sz = MAXPATHLEN;
            size_t nsz;
+           
            nameBuf = emalloc(sz);

            Dir_Expand(memName, dirSearchPath, members);
            while (!Lst_IsEmpty(members)) {
                member = (char *)Lst_DeQueue(members);
-               nsz = strlen(libName) + strlen(member) + 3;
-               if (sz > nsz)
-                       nameBuf = erealloc(nameBuf, sz = nsz * 2);
-
+               nsz = strlen(libName) + strlen(member) + 3; /* 3 = ()+\0 */
+               if (sz < nsz) {
+                       sz = nsz * 2;
+                       nameBuf = erealloc(nameBuf, sz);
+               }
                snprintf(nameBuf, sz, "%s(%s)", libName, member);
                free(member);
                gn = Targ_FindNode (nameBuf, TARG_CREATE);

>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->closed 
State-Changed-By: harti 
State-Changed-When: Mon Nov 29 16:24:05 GMT 2004 
State-Changed-Why:  
Committed with a slight change (comparison reverted, I find that 
better readable). Thanks. 


http://www.freebsd.org/cgi/query-pr.cgi?pr=74368 
>Unformatted:
