From patchwork Wed Mar 11 16:28:24 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Pluzhnikov X-Patchwork-Id: 5583 Received: (qmail 43422 invoked by alias); 11 Mar 2015 16:28:58 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 43412 invoked by uid 89); 11 Mar 2015 16:28:58 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW, SPF_PASS, T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mail-oi0-f43.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:content-type; bh=lEdUeIJfrNp2tHy+z+2iyhnryWJvbjFDbjCx4KJAXeM=; b=hnqYXMg5ipbrvW0WzZsOYRE+2tPwYXHTPbtabVHKhP5Y7+AM9liAjLNa7oHI8bwTwX QyD3abSjWN0EhDPA71b/Ye148tgsj/ReUlX6UmsDqKSnyn35QbjO075S4z8qhDO4+w21 uzAz7Km9/4KOJs3r2Ln3230d/GZtv4k/r2CFHJl3VjiFIm6WmjxIDnDwmCcTJHn/5Htg w9dihiCI9K83w6ZRYDO58rRNY9UIuub3n6KfWqCyHHRx1CgZDKKGQtlprFLhnamc68+r 7WEARV9tFKxZHlKQJJKTYJ/eDClenTqRIdX/HKLIZzaiSXVRdc+IC1bXE6PFSFQnrzzT KEhg== X-Gm-Message-State: ALoCoQnijqyqetQEBqQ75tvLuARsaJkKtRZR+x/bwrwBHZvoFCRsaH1dd1dmWWFPRNx8pFvI0P0b X-Received: by 10.202.50.68 with SMTP id y65mr29163698oiy.91.1426091335149; Wed, 11 Mar 2015 09:28:55 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: From: Paul Pluzhnikov Date: Wed, 11 Mar 2015 09:28:24 -0700 Message-ID: Subject: Re: [patch] Error on setenv(..., NULL, ...) To: GLIBC Devel On Wed, Mar 11, 2015 at 9:11 AM, Paul Pluzhnikov wrote: > Attached trivial patch makes setenv(..., NULL, ...) fail instead of > producing "bad" environment. Tested on Linux/x86_64, no new failures. Now with added test :-) 2015-03-11 Paul Pluzhnikov * stdlib/setenv.c (setenv): Reject NULL value in setenv. * stdlib/tst-environ.c (do_test): Add test case. diff --git a/stdlib/setenv.c b/stdlib/setenv.c index b60c4f0..63a95cf 100644 --- a/stdlib/setenv.c +++ b/stdlib/setenv.c @@ -240,7 +240,8 @@ setenv (name, value, replace) const char *value; int replace; { - if (name == NULL || *name == '\0' || strchr (name, '=') != NULL) + if (name == NULL || *name == '\0' || strchr (name, '=') != NULL + || value == NULL) { __set_errno (EINVAL); return -1; diff --git a/stdlib/tst-environ.c b/stdlib/tst-environ.c index 9871bd7..d3137cb 100644 --- a/stdlib/tst-environ.c +++ b/stdlib/tst-environ.c @@ -197,6 +197,13 @@ do_test (void) } errno = 0; + if (setenv (VAR, NULL, 1) >= 0 || errno != EINVAL) + { + puts ("setenv #7 failed"); + result = 1; + } + + errno = 0; if (unsetenv (NULL) >= 0 || errno != EINVAL) { puts ("unsetenv #1 failed");