Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:50397 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 6037 invoked from network); 19 Nov 2010 22:08:14 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 19 Nov 2010 22:08:14 -0000 Authentication-Results: pb1.pair.com header.from=felipensp@gmail.com; sender-id=pass; domainkeys=bad Authentication-Results: pb1.pair.com smtp.mail=felipensp@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.214.42 as permitted sender) DomainKey-Status: bad X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: felipensp@gmail.com X-Host-Fingerprint: 209.85.214.42 mail-bw0-f42.google.com Received: from [209.85.214.42] ([209.85.214.42:56409] helo=mail-bw0-f42.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id BA/42-29351-B45F6EC4 for ; Fri, 19 Nov 2010 17:08:13 -0500 Received: by bwz13 with SMTP id 13so4457501bwz.29 for ; Fri, 19 Nov 2010 14:08:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:received:in-reply-to :references:from:date:message-id:subject:to:content-type; bh=UbfqH/SXob+SypOUiF9YWEpdzX3gLZHFIQTAaM8sR34=; b=S+4oVh9tSo/sZ4sy6mlNl696ijnbB0DYlVVsm0BHIOW5Oc12S8yvvZbccCGsHScyYF Hm2Nrx+nCQPlfHeuSxEiP7x3xqj1T8AcjRoirno1S8T+HrFRWz4LL+pdgEAl9/3w29W0 0AkwphIEQTmf5j/vsSnLxzA7Yoa/J1B7L9er4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; b=nVzyNaMrRfDr2wyYY/giB0qw2gniiGA+7cbUG4uemYiIiGv+NSzCDBHU2vdf8UmVZH IWXswQQ08eSRwiRSNr+CjFC0HJWM20K6KvTDw7hMimYgaqiD6n+7wjXvskbOaI4X8Heh E7Oa75rd6RWASnd9skpXFMA7ELgbaM/68K8N4= Received: by 10.204.25.207 with SMTP id a15mr2672830bkc.83.1290204488235; Fri, 19 Nov 2010 14:08:08 -0800 (PST) MIME-Version: 1.0 Received: by 10.204.52.146 with HTTP; Fri, 19 Nov 2010 14:07:47 -0800 (PST) In-Reply-To: <20101119154301.GB9213@redhat.com> References: <20101119154301.GB9213@redhat.com> Date: Fri, 19 Nov 2010 20:07:47 -0200 Message-ID: To: internals@lists.php.net Content-Type: multipart/alternative; boundary=00032555795635799b04956f2426 Subject: Re: [PHP-DEV] [PATCH] fix extract w.r.t GLOBALS again From: felipensp@gmail.com (Felipe Pena) --00032555795635799b04956f2426 Content-Type: text/plain; charset=UTF-8 Hi, 2010/11/19 Joe Orton > The check to prevent extract() overwriting $GLOBALS got broken at some > point - here's a fix: > > Index: ext/standard/array.c > =================================================================== > --- ext/standard/array.c (revision 305556) > +++ ext/standard/array.c (working copy) > @@ -1389,10 +1389,10 @@ > > case EXTR_OVERWRITE: > /* GLOBALS protection */ > - if (var_exists && var_name_len == > sizeof("GLOBALS") && !strcmp(var_name, "GLOBALS")) { > + if (var_exists && var_name_len == > sizeof("GLOBALS")-1 && !strcmp(var_name, "GLOBALS")) { > break; > } > - if (var_exists && var_name_len == > sizeof("this") && !strcmp(var_name, "this") && EG(scope) && > EG(scope)->name_length != 0) { > + if (var_exists && var_name_len == > sizeof("this")-1 && !strcmp(var_name, "this") && EG(scope) && > EG(scope)->name_length != 0) { > break; > } > ZVAL_STRINGL(&final_name, var_name, > var_name_len, 1); > Index: ext/standard/tests/array/extract_safety.phpt > =================================================================== > --- ext/standard/tests/array/extract_safety.phpt (revision 0) > +++ ext/standard/tests/array/extract_safety.phpt (revision 0) > @@ -0,0 +1,24 @@ > +--TEST-- > +Test extract() for overwrite of GLOBALS > +--FILE-- > + +$str = "John"; > +debug_zval_dump($GLOBALS["str"]); > + > +/* Extracting Global Variables */ > +$splat = array("foo" => "bar"); > +var_dump(extract(array("GLOBALS" => $splat, EXTR_OVERWRITE))); > + > +unset ($splat); > + > +debug_zval_dump($GLOBALS["str"]); > + > +echo "\nDone"; > +?> > + > +--EXPECTF-- > +string(4) "John" refcount(2) > +int(0) > +string(4) "John" refcount(2) > + > +Done > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > I committed your fix in the 5.2, 5.3 and trunk. Thanks for the patch! -- Regards, Felipe Pena --00032555795635799b04956f2426--