~clint-fewbar/ubuntu/precise/php5/php5-5.4-merge

« back to all changes in this revision

Viewing changes to debian/patches/do-not-overwrite-GLOBALS-and-this.patch

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2011-02-22 09:46:37 UTC
  • mfrom: (1.1.20) (0.3.18 sid)
  • Revision ID: package-import@ubuntu.com-20110222094637-nlu2tvb7oqgaarl0
Tags: 5.3.5-1ubuntu1
* Merge from debian/unstable. Remaining changes:
 - debian/control:
    * Dropped firebird2.1-dev, libc-client-dev, libmcrypt-dev as it is in universe.
    * Dropped libmysqlclient15-dev, build against mysql 5.1.
    * Dropped libcurl-dev not in the archive.
    * Suggest php5-suhosin rather than recommends.
    * Dropped php5-imap, php5-interbase, php5-mcrypt since we have versions 
      already in universe.
    * Dropped libonig-dev and libqgdbm since its in universe. (will be re-added in lucid+1)
    * Dropped locales-all.
  - modulelist: Drop imap, interbase, sybase, and mcrypt.
  - debian/rules:
    * Dropped building of mcrypt, imap, and interbase.
    * Install apport hook for php5.
    * stop mysql instance on clean just in case we failed in tests

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
--- a/ext/standard/array.c
2
 
+++ b/ext/standard/array.c
3
 
@@ -1389,10 +1389,10 @@ PHP_FUNCTION(extract)
4
 
 
5
 
                        case EXTR_OVERWRITE:
6
 
                                /* GLOBALS protection */
7
 
-                               if (var_exists && var_name_len == sizeof("GLOBALS") && !strcmp(var_name, "GLOBALS")) {
8
 
+                               if (var_exists && var_name_len == sizeof("GLOBALS")-1 && !strcmp(var_name, "GLOBALS")) {
9
 
                                        break;
10
 
                                }
11
 
-                               if (var_exists && var_name_len == sizeof("this")  && !strcmp(var_name, "this") && EG(scope) && EG(scope)->name_length != 0) {
12
 
+                               if (var_exists && var_name_len == sizeof("this")-1  && !strcmp(var_name, "this") && EG(scope) && EG(scope)->name_length != 0) {
13
 
                                        break;
14
 
                                }
15
 
                                ZVAL_STRINGL(&final_name, var_name, var_name_len, 1);
16
 
--- /dev/null
17
 
+++ b/ext/standard/tests/array/extract_safety.phpt
18
 
@@ -0,0 +1,24 @@
19
 
+--TEST--
20
 
+Test extract() for overwrite of GLOBALS
21
 
+--FILE--
22
 
+<?php
23
 
+$str = "John";
24
 
+debug_zval_dump($GLOBALS["str"]);
25
 
+
26
 
+/* Extracting Global Variables */
27
 
+$splat = array("foo" => "bar");
28
 
+var_dump(extract(array("GLOBALS" => $splat, EXTR_OVERWRITE)));
29
 
+
30
 
+unset ($splat);
31
 
+
32
 
+debug_zval_dump($GLOBALS["str"]);
33
 
+
34
 
+echo "\nDone";
35
 
+?>
36
 
+
37
 
+--EXPECTF--
38
 
+string(4) "John" refcount(2)
39
 
+int(0)
40
 
+string(4) "John" refcount(2)
41
 
+
42
 
+Done
43
 
\ No newline at end of file