From owner-freebsd-bugs@FreeBSD.ORG Sat May 19 04:20:04 2007 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B589816A40F for ; Sat, 19 May 2007 04:20:04 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [69.147.83.40]) by mx1.freebsd.org (Postfix) with ESMTP id 7EDAB13C487 for ; Sat, 19 May 2007 04:20:04 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id l4J4K4EP054699 for ; Sat, 19 May 2007 04:20:04 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id l4J4K4QH054698; Sat, 19 May 2007 04:20:04 GMT (envelope-from gnats) Resent-Date: Sat, 19 May 2007 04:20:04 GMT Resent-Message-Id: <200705190420.l4J4K4QH054698@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Ighighi Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 657BC16A404 for ; Sat, 19 May 2007 04:16:30 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (www.freebsd.org [69.147.83.33]) by mx1.freebsd.org (Postfix) with ESMTP id 5473713C458 for ; Sat, 19 May 2007 04:16:30 +0000 (UTC) (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 l4J4GT14021477 for ; Sat, 19 May 2007 04:16:29 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.13.1/8.13.1/Submit) id l4J4BSgn021189; Sat, 19 May 2007 04:11:28 GMT (envelope-from nobody) Message-Id: <200705190411.l4J4BSgn021189@www.freebsd.org> Date: Sat, 19 May 2007 04:11:28 GMT From: Ighighi To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.0 Cc: Subject: bin/112775: libmd(3) bug for some zero-length files X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 May 2007 04:20:04 -0000 >Number: 112775 >Category: bin >Synopsis: libmd(3) bug for some zero-length files >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sat May 19 04:20:03 GMT 2007 >Closed-Date: >Last-Modified: >Originator: Ighighi >Release: 6.2-STABLE >Organization: >Environment: FreeBSD orion 6.2-STABLE FreeBSD 6.2-STABLE #1: Fri May 18 01:56:15 VET 2007 root@orion:/usr/obj/usr/src/sys/CUSTOM i386 >Description: A bug was introduced into version 1.14 of src/lib/libmd/mdXhl.c that prevents any application using the libmd(3) functions {MD4,MD5,SHA_,SHA1_,SHA256_}File() from correctly processing zero-length files on filesystems such as procfs(5). >How-To-Repeat: $ /sbin/md5 /proc/1/cmdline MD5 (/proc/1/cmdline) = d41d8cd98f00b204e9800998ecf8427e $ /bin/cat /proc/1/cmdline | /sbin/md5 8624f652bec9bf7d9376dca7ea02a6b5 >Fix: The attached patch uses the code from the previous 1.13 version modified for style(9). To apply it on your system, run: cd /usr/src/lib/libmd make clean && make obj && make depend && make && make install Patch attached with submission follows: --- lib/libmd/mdXhl.c.orig Sun Sep 8 11:10:04 2002 +++ lib/libmd/mdXhl.c Sat May 19 00:04:24 2007 @@ -43,7 +43,22 @@ char * MDXFile(const char *filename, char *buf) { - return (MDXFileChunk(filename, buf, 0, 0)); + unsigned char buffer[BUFSIZ]; + MDX_CTX ctx; + int f, i, j; + + MDXInit(&ctx); + f = open(filename, O_RDONLY); + if (f < 0) + return 0; + while ((i = read(f, buffer, sizeof(buffer))) > 0) + MDXUpdate(&ctx, buffer, i); + j = errno; + close(f); + errno = j; + if (i < 0) + return 0; + return MDXEnd(&ctx, buf); } char * >Release-Note: >Audit-Trail: >Unformatted: