Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:50393 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 50478 invoked from network); 19 Nov 2010 16:33:19 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 19 Nov 2010 16:33:19 -0000 Authentication-Results: pb1.pair.com header.from=jorton@redhat.com; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=jorton@redhat.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain redhat.com designates 209.132.183.28 as permitted sender) X-PHP-List-Original-Sender: jorton@redhat.com X-Host-Fingerprint: 209.132.183.28 mx1.redhat.com Received: from [209.132.183.28] ([209.132.183.28:35631] helo=mx1.redhat.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 4F/F0-44146-EC6A6EC4 for ; Fri, 19 Nov 2010 11:33:19 -0500 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id oAJFjQvG012962 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 19 Nov 2010 10:45:26 -0500 Received: from turnip.manyfish.co.uk (vpn-8-125.rdu.redhat.com [10.11.8.125]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id oAJFjOIP025800 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Fri, 19 Nov 2010 10:45:26 -0500 Received: from jorton by turnip.manyfish.co.uk with local (Exim 4.72) (envelope-from ) id 1PJT78-0002dI-0J for internals@lists.php.net; Fri, 19 Nov 2010 15:43:02 +0000 Date: Fri, 19 Nov 2010 15:43:01 +0000 To: internals@lists.php.net Message-ID: <20101119154301.GB9213@redhat.com> Mail-Followup-To: internals@lists.php.net MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-08-17) Organization: Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, SL4 1TE, United Kingdom. Registered in UK and Wales under Company Registration No. 03798903 Directors: Michael Cunningham (USA), Brendan Lane (Ireland), Matt Parson (USA), Charlie Peters (USA) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 Subject: [PATCH] fix extract w.r.t GLOBALS again From: jorton@redhat.com (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-- + "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