NetBSD Problem Report #44113

From njoly@lanfeust.sis.pasteur.fr  Thu Nov 18 14:55:28 2010
Return-Path: <njoly@lanfeust.sis.pasteur.fr>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by www.NetBSD.org (Postfix) with ESMTP id 6CFB563BA98
	for <gnats-bugs@gnats.NetBSD.org>; Thu, 18 Nov 2010 14:55:28 +0000 (UTC)
Message-Id: <20101118145525.87EC7DC9BB@lanfeust.sis.pasteur.fr>
Date: Thu, 18 Nov 2010 15:55:25 +0100 (CET)
From: njoly@pasteur.fr
Reply-To: njoly@pasteur.fr
To: gnats-bugs@gnats.NetBSD.org
Subject: printf(3) should ignore zero padding for nan/inf
X-Send-Pr-Version: 3.95

>Number:         44113
>Category:       lib
>Synopsis:       printf(3) should ignore zero padding for nan/inf
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    lib-bug-people
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Nov 18 15:00:01 +0000 2010
>Closed-Date:    Fri Nov 19 12:57:38 +0000 2010
>Last-Modified:  Fri Nov 19 18:20:02 +0000 2010
>Originator:     Nicolas Joly
>Release:        NetBSD 5.99.39
>Organization:
Institut Pasteur
>Environment:
System: NetBSD lanfeust.sis.pasteur.fr 5.99.39 NetBSD 5.99.39 (LANFEUST) #14: Thu Nov 18 13:06:13 CET 2010 njoly@lanfeust.sis.pasteur.fr:/local/src/NetBSD/obj.amd64/sys/arch/amd64/compile/LANFEUST amd64
Architecture: x86_64
Machine: amd64
>Description:
printf(3) family of functions do obey zero padding flag when printing
nan/inf values, but should better not.

A call such as `printf("%010f", NAN)' will generate the following `0000000nan'
string, which can give unexpected results and prevents further parsing; calls
such as strtod(3) will fails ... Generating a space padded string `       nan'
seems much better in that case.
>How-To-Repeat:
>Fix:
The following patch do seems to do the trick.

Index: lib/libc/stdio/vfwprintf.c
===================================================================
RCS file: /cvsroot/src/lib/libc/stdio/vfwprintf.c,v
retrieving revision 1.21
diff -u -p -r1.21 vfwprintf.c
--- lib/libc/stdio/vfwprintf.c	31 Jul 2010 08:47:34 -0000	1.21
+++ lib/libc/stdio/vfwprintf.c	18 Nov 2010 14:36:07 -0000
@@ -1131,6 +1131,7 @@ fp_common:
 					result = (ch >= 'a') ? STRCONST("inf") :
 					    STRCONST("INF");
 				size = 3;
+				flags &= ~ZEROPAD;
 				break;
 			}
 #else
@@ -1161,6 +1162,7 @@ fp_common:
 				else
 					result = STRCONST("inf");
 				size = 3;
+				flags &= ~ZEROPAD;
 				break;
 			}
 			if (isnan(_double)) {
@@ -1169,6 +1171,7 @@ fp_common:
 				else
 					result = STRCONST("nan");
 				size = 3;
+				flags &= ~ZEROPAD;
 				break;
 			}


>Release-Note:

>Audit-Trail:
From: "Christos Zoulas" <christos@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/44113 CVS commit: src/lib/libc/stdio
Date: Thu, 18 Nov 2010 19:44:20 -0500

 Module Name:	src
 Committed By:	christos
 Date:		Fri Nov 19 00:44:19 UTC 2010

 Modified Files:
 	src/lib/libc/stdio: vfwprintf.c

 Log Message:
 PR/44113: Nicolas Joly: printf(3) should ignore zero padding for nan/inf


 To generate a diff of this commit:
 cvs rdiff -u -r1.21 -r1.22 src/lib/libc/stdio/vfwprintf.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: open->feedback
State-Changed-By: wiz@NetBSD.org
State-Changed-When: Fri, 19 Nov 2010 00:47:57 +0000
State-Changed-Why:
christos committed, ok now?


From: Nicolas Joly <njoly@pasteur.fr>
To: gnats-bugs@NetBSD.org
Cc: lib-bug-people@netbsd.org, netbsd-bugs@netbsd.org,
	gnats-admin@netbsd.org, wiz@NetBSD.org, njoly@pasteur.fr
Subject: Re: lib/44113 (printf(3) should ignore zero padding for nan/inf)
Date: Fri, 19 Nov 2010 13:40:38 +0100

 On Fri, Nov 19, 2010 at 12:47:59AM +0000, Thomas Klausner wrote:
 > Synopsis: printf(3) should ignore zero padding for nan/inf
 > 
 > State-Changed-From-To: open->feedback
 > State-Changed-By: wiz@NetBSD.org
 > State-Changed-When: Fri, 19 Nov 2010 00:47:57 +0000
 > State-Changed-Why:
 > christos committed, ok now?

 Works fine. Thanks.

 -- 
 Nicolas Joly

 Biological Software and Databanks.
 Institut Pasteur, Paris.

State-Changed-From-To: feedback->closed
State-Changed-By: wiz@NetBSD.org
State-Changed-When: Fri, 19 Nov 2010 12:57:38 +0000
State-Changed-Why:
Confirmed fixed, thanks.


From: "Nicolas Joly" <njoly@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/44113 CVS commit: src
Date: Fri, 19 Nov 2010 18:18:54 +0000

 Module Name:	src
 Committed By:	njoly
 Date:		Fri Nov 19 18:18:54 UTC 2010

 Modified Files:
 	src/distrib/sets/lists/tests: mi
 	src/tests/lib/libc/stdio: Makefile
 Added Files:
 	src/tests/lib/libc/stdio: t_format.c

 Log Message:
 Add testcase for PR/44113: printf(3) should ignore zero padding for
 nan/inf.


 To generate a diff of this commit:
 cvs rdiff -u -r1.157 -r1.158 src/distrib/sets/lists/tests/mi
 cvs rdiff -u -r1.1 -r1.2 src/tests/lib/libc/stdio/Makefile
 cvs rdiff -u -r0 -r1.1 src/tests/lib/libc/stdio/t_format.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.