From nobody@FreeBSD.org  Thu Sep 27 09:39:16 2012
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 8117F106566C
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 27 Sep 2012 09:39:16 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22])
	by mx1.freebsd.org (Postfix) with ESMTP id 6D4228FC0A
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 27 Sep 2012 09:39:16 +0000 (UTC)
Received: from red.freebsd.org (localhost [127.0.0.1])
	by red.freebsd.org (8.14.5/8.14.5) with ESMTP id q8R9dFoO032672
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 27 Sep 2012 09:39:15 GMT
	(envelope-from nobody@red.freebsd.org)
Received: (from nobody@localhost)
	by red.freebsd.org (8.14.5/8.14.5/Submit) id q8R9dFgx032670;
	Thu, 27 Sep 2012 09:39:15 GMT
	(envelope-from nobody)
Message-Id: <201209270939.q8R9dFgx032670@red.freebsd.org>
Date: Thu, 27 Sep 2012 09:39:15 GMT
From: "Ilya A. Arkhipov" <rum1cro@yandex.ru>
To: freebsd-gnats-submit@FreeBSD.org
Subject: [patch] Fix for incorrect work: pw user show 0
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         172112
>Category:       bin
>Synopsis:       [patch] Fix for incorrect work: pw user show 0
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    bapt
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Thu Sep 27 09:40:08 UTC 2012
>Closed-Date:    Mon Nov 12 14:44:41 UTC 2012
>Last-Modified:  Mon Nov 12 14:44:41 UTC 2012
>Originator:     Ilya A. Arkhipov
>Release:        CURRENT
>Organization:
Luxoft
>Environment:
FreeBSD gdpsolaris 10.0-CURRENT FreeBSD 10.0-CURRENT #0: Mon Sep 17 08:52:10 UTC 2012     root@gdpsolaris:/usr/obj/usr/src/sys/GENERIC  amd64
>Description:
pw incorrect works with 0 uid:
# pw user show 0
pw: no such user `0'

Yes I know regarding -u, but:

# pw user show 80
www:*:80:80::0:0:World Wide Web Owner:/nonexistent:/usr/sbin/nologin

we just need fix pw_user.c#318 ">" to ">="
>How-To-Repeat:
pw user show 0
>Fix:
--- pw_user.c_old       2012-09-27 12:22:27.043408321 +0000
+++ pw_user.c   2012-09-27 11:54:19.386410444 +0000
@@ -315,7 +315,7 @@
                 */
                if (mode != M_ADD && pwd == NULL
                    && strspn(a_name->val, "0123456789") == strlen(a_name->val)
-                   && atoi(a_name->val) > 0) { /* Assume uid */
+                   && atoi(a_name->val) >= 0) {        /* Assume uid */
                        (a_uid = a_name)->ch = 'u';
                        a_name = NULL;
                }


Patch attached with submission follows:

--- pw_user.c_old	2012-09-27 12:22:27.043408321 +0000
+++ pw_user.c	2012-09-27 11:54:19.386410444 +0000
@@ -315,7 +315,7 @@
 		 */
 		if (mode != M_ADD && pwd == NULL
 		    && strspn(a_name->val, "0123456789") == strlen(a_name->val)
-		    && atoi(a_name->val) > 0) {	/* Assume uid */
+		    && atoi(a_name->val) >= 0) {	/* Assume uid */
 			(a_uid = a_name)->ch = 'u';
 			a_name = NULL;
 		}


>Release-Note:
>Audit-Trail:

From: Ilya A. Arkhipov <ruM1cRO@yandex.ru>
To: bug-followup@freebsd.org
Cc:  
Subject: Re: bin/172112: [patch] Fix for incorrect work: pw user show 0
Date: Mon, 01 Oct 2012 14:32:08 +0400

 Hi All,
 
 We need remove atoi() because after http://svnweb.freebsd.org/base/head/usr.sbin/pw/pw_user.c?r1=42287&r2=43780 it's no need there.
 We already know a_name->val has only digits or no, and have all checks on this.
 
 Please fix me if I'm wrong.
 
 -- 
 With Best Regards,
 Ilya A. Arkhipov
Responsible-Changed-From-To: freebsd-bugs->bapt 
Responsible-Changed-By: bapt 
Responsible-Changed-When: Mon Oct 1 16:41:44 UTC 2012 
Responsible-Changed-Why:  
I'll take it. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=172112 
State-Changed-From-To: open->patched 
State-Changed-By: bapt 
State-Changed-When: Mon Oct 1 16:43:38 UTC 2012 
State-Changed-Why:  
awaiting MFC 

http://www.freebsd.org/cgi/query-pr.cgi?pr=172112 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/172112: commit references a PR
Date: Mon,  1 Oct 2012 16:42:30 +0000 (UTC)

 Author: bapt
 Date: Mon Oct  1 16:42:07 2012
 New Revision: 241107
 URL: http://svn.freebsd.org/changeset/base/241107
 
 Log:
   Remove useless atoi(3), previous strspn(3) makes sure that a_name->val is a
   number.
   This also allow pw user show to work as expected.
   
   PR:		bin/172112
   Submitted by:	"Ilya A. Arkhipov" <rum1cro@yandex.ru>
   MFC after:	1 month
 
 Modified:
   head/usr.sbin/pw/pw_user.c
 
 Modified: head/usr.sbin/pw/pw_user.c
 ==============================================================================
 --- head/usr.sbin/pw/pw_user.c	Mon Oct  1 16:34:12 2012	(r241106)
 +++ head/usr.sbin/pw/pw_user.c	Mon Oct  1 16:42:07 2012	(r241107)
 @@ -314,8 +314,7 @@ pw_user(struct userconf * cnf, int mode,
  		 * know.
  		 */
  		if (mode != M_ADD && pwd == NULL
 -		    && strspn(a_name->val, "0123456789") == strlen(a_name->val)
 -		    && atoi(a_name->val) > 0) {	/* Assume uid */
 +		    && strspn(a_name->val, "0123456789") == strlen(a_name->val)) {
  			(a_uid = a_name)->ch = 'u';
  			a_name = NULL;
  		}
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: patched->closed 
State-Changed-By: bapt 
State-Changed-When: Mon Nov 12 14:44:40 UTC 2012 
State-Changed-Why:  
Committed. Thanks! 

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