]> granicus.if.org Git - php/commitdiff
- remove magic quotes support, functions are kept (see the NEWS entry for the details...
authorPierre Joye <pajoye@php.net>
Fri, 22 Jul 2011 11:56:20 +0000 (11:56 +0000)
committerPierre Joye <pajoye@php.net>
Fri, 22 Jul 2011 11:56:20 +0000 (11:56 +0000)
39 files changed:
ext/exif/tests/bug34704.phpt
ext/exif/tests/exif002.phpt
ext/exif/tests/exif006.phpt
ext/filter/tests/bug39763.phpt
ext/filter/tests/bug42718-2.phpt
ext/filter/tests/bug42718.phpt
ext/hash/tests/mhash_001.phpt
ext/hash/tests/mhash_004.phpt
ext/iconv/tests/translit-utf8.phpt
ext/pcre/tests/bug33200.phpt
ext/phar/tests/fgc_edgecases.phpt
ext/spl/tests/SplFileObject_fwrite_variation_003.phpt
ext/standard/tests/file/magic_quotes.phpt
ext/standard/tests/general_functions/get_cfg_var_variation8.phpt
ext/standard/tests/general_functions/get_magic_quotes_gpc.phpt
ext/standard/tests/general_functions/get_magic_quotes_runtime.phpt
ext/standard/tests/general_functions/set_magic_quotes_runtime_variation1.phpt
ext/standard/tests/strings/add-and-stripslashes.phpt
ext/standard/tests/strings/addslashes_variation3.phpt
ext/standard/tests/strings/bug22904.phpt
ext/standard/tests/strings/parse_str_basic3.phpt
ext/standard/tests/strings/stripslashes_variation5.phpt
ext/sysvsem/tests/sysv.phpt
ext/xml/tests/xml001.phpt
ext/xml/tests/xml002.phpt
ext/xml/tests/xml003.phpt
ext/xml/tests/xml004.phpt
ext/xml/tests/xml_closures_001.phpt
ext/zlib/tests/004.phpt
main/php_version.h
tests/basic/023.phpt
tests/basic/024.phpt
tests/basic/025.phpt
tests/basic/026.phpt
tests/basic/027.phpt
tests/basic/bug46313-win.phpt
tests/basic/bug46313.phpt
tests/basic/bug46759.phpt
tests/security/magic_quotes_gpc.phpt

index b6b26de78d67c6b0fb0924d883309be15bdb5319..7688ce861af33611afb3b56a03ca7eb9b5ee4308 100755 (executable)
@@ -3,7 +3,6 @@ Bug #34704 (Infinite recursion due to corrupt JPEG)
 --SKIPIF--
 <?php if (!extension_loaded('exif')) print 'skip exif extension not available';?>
 --INI--
-magic_quotes_runtime=0
 output_handler=
 zlib.output_compression=0 
 --FILE--
index 1b1220c60073abbb0c3a472cdb890d80cc060b58..2a70f2920c9a5e2c27f50b1e4919172206c23200 100644 (file)
@@ -3,7 +3,6 @@ Check for exif_thumbnail
 --SKIPIF--
 <?php if (!extension_loaded('exif')) print 'skip exif extension not available';?>
 --INI--
-magic_quotes_runtime=0
 output_handler=
 zlib.output_compression=0 
 --FILE--
index 10458c083d951e6f40adde589ee3c27e135ec338..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,90 +0,0 @@
---TEST--
-Check for exif_read_data, magic_quotes_runtime
---SKIPIF--
-<?php 
-       if (!extension_loaded('exif')) die('skip exif extension not available');
-       if (version_compare(PHP_VERSION, "4.4.0-dev", "<")) die('skip PHP 4.4 required');
-?>
---INI--
-output_handler=
-zlib.output_compression=0
-magic_quotes_runtime=1
---FILE--
-<?php
-/*
-  test1.jpg is a 1*1 image that does not contain any Exif/Comment information
-  test2.jpg is the same image but contains Exif/Comment information and a
-            copy of test1.jpg as a thumbnail.
-  test6.jpg is the same as test2.jpg but with a UNICODE UserComment: &Auml;&Ouml;&&Uuml;&szlig;&auml;&ouml;&uuml;
-*/
-var_dump(exif_read_data(dirname(__FILE__).'/test6.jpg','',true,false));
-?>
---EXPECTF--
-Deprecated: Directive 'magic_quotes_runtime' is deprecated in PHP 5.3 and greater in Unknown on line 0
-array(5) {
-  ["FILE"]=>
-  array(6) {
-    ["FileName"]=>
-    string(9) "test6.jpg"
-    ["FileDateTime"]=>
-    int(%d)
-    ["FileSize"]=>
-    int(1240)
-    ["FileType"]=>
-    int(2)
-    ["MimeType"]=>
-    string(10) "image/jpeg"
-    ["SectionsFound"]=>
-    string(33) "ANY_TAG, IFD0, THUMBNAIL, COMMENT"
-  }
-  ["COMPUTED"]=>
-  array(12) {
-    ["html"]=>
-    string(24) "width=\"1\" height=\"1\""
-    ["Height"]=>
-    int(1)
-    ["Width"]=>
-    int(1)
-    ["IsColor"]=>
-    int(1)
-    ["ByteOrderMotorola"]=>
-    int(1)
-    ["UserComment"]=>
-    string(16) "Hallo \'Du\'+da!"
-    ["UserCommentEncoding"]=>
-    string(5) "ASCII"
-    ["Copyright"]=>
-    string(45) "Photo \"M. Boerger\"., Edited \'M. Boerger\'."
-    ["Copyright.Photographer"]=>
-    string(21) "Photo \"M. Boerger\"."
-    ["Copyright.Editor"]=>
-    string(22) "Edited \'M. Boerger\'."
-    ["Thumbnail.FileType"]=>
-    int(2)
-    ["Thumbnail.MimeType"]=>
-    string(10) "image/jpeg"
-  }
-  ["IFD0"]=>
-  array(2) {
-    ["Copyright"]=>
-    string(21) "Photo \"M. Boerger\"."
-    ["UserComment"]=>
-    string(5) "ASCII"
-  }
-  ["THUMBNAIL"]=>
-  array(2) {
-    ["JPEGInterchangeFormat"]=>
-    int(134)
-    ["JPEGInterchangeFormatLength"]=>
-    int(523)
-  }
-  ["COMMENT"]=>
-  array(3) {
-    [0]=>
-    string(13) "Comment \"1\""
-    [1]=>
-    string(13) "Comment \'2\'"
-    [2]=>
-    string(13) "Comment #3end"
-  }
-}
index 36ee41561a8a625340ad0f2ec57d24e82c951019..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,17 +0,0 @@
---TEST--
-Bug #39763 (filter applies magic_quotes twice in parse_str())
---INI--
-magic_quotes_gpc=1
-filter.default=
---FILE--
-<?php
-$arr = array();
-parse_str("val=%22probably+a+bug%22", $arr);
-echo $arr['val'] . "\n";
-parse_str("val=%22probably+a+bug%22");
-echo $val . "\n";
-?>
---EXPECT--     
-Deprecated: Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0
-\"probably a bug\"
-\"probably a bug\"
\ No newline at end of file
index 13cd990d0031d2efa8702542af19c9493066b079..ed210681d36216c2a47243c6e1a79996a4d591e9 100644 (file)
@@ -4,7 +4,6 @@ Bug #42718 - 2 (unsafe_raw filter not applied when configured as default filter)
 <?php if (!extension_loaded("filter")) die("skip"); ?>
 --INI--
 display_errors=0
-magic_quotes_gpc=1
 filter.default=unsafe_raw
 filter.default_flags=
 --GET--
@@ -13,9 +12,7 @@ a=1%00
 <?php
 echo ini_get('filter.default') . "\n";
 echo ini_get('filter.default_flags') . "\n";
-echo addcslashes($_GET['a'],"\0") . "\n";
 ?>
 --EXPECT--
 unsafe_raw
 
-1\0
index d1ede3f7d2cfc8b758d95aa5b1fb3d88dea1ab35..ba56d3988a6fd409e4b9ec9596fb2a4480d4c440 100644 (file)
@@ -5,7 +5,6 @@ FILTER_UNSAFE_RAW not applied when configured as default filter, even with flags
 --SKIPIF--
 <?php if (!extension_loaded("filter")) die("skip"); ?>
 --INI--
-magic_quotes_gpc=0
 filter.default=unsafe_raw
 filter.default_flags=4
 --GET--
index b2a92839beface1bfdcbf2854859622ed5591d66..5df03782592af9a9e98fc652b8e36fb521481b9b 100644 (file)
@@ -1,7 +1,5 @@
 --TEST--
 mhash() test
---INI--
-magic_quotes_runtime=0
 --SKIPIF--
 <?php
        include "skip_mhash.inc";
index 272166333297a8e351d1e96ee8849c12aca0c49d..b928a794b1ec099c8b7afd8e01caaadae8228616 100644 (file)
@@ -1,7 +1,5 @@
 --TEST--
 mhash() modifying algorithm parameter
---INI--
-magic_quotes_runtime=0
 --SKIPIF--
 <?php
        include "skip_mhash.inc";
index aa5131f2c312bf558b8e54c9a28822ca5b3bfeb7..0151dc385c3701de4f4c206b73b00d54275788d5 100644 (file)
@@ -6,7 +6,6 @@ include('skipif.inc');
 ( ICONV_IMPL != "libiconv" ) and die("skip ICONV_IMPL != \"libiconv\""); 
 ?>
 --INI--
-magic_quotes_runtime=0
 error_reporting=2047
 --FILE--
 <?php // vim600: syn=php
index ddbb06519bb3d0af1f001a69800320758b7a838b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,13 +0,0 @@
---TEST--
-Bug #33200 (magic_quotes_sybase = On makes 'e' modifier misbehave)
---INI--
-magic_quotes_sybase=1
---FILE--
-<?php
-$str = 'some \'$sample\' text';
-$str = preg_replace("/(some.*text)/e", "strtoupper('\\1')", $str);
-echo $str . "\r\n";
-?>
---EXPECT--
-Deprecated: Directive 'magic_quotes_sybase' is deprecated in PHP 5.3 and greater in Unknown on line 0
-SOME '$SAMPLE' TEXT
index 5b85d0dcf2876c549c05d8827d16b712e0101f36..b943546963b1cf1d398a6afc67346bcc694ea373 100644 (file)
@@ -33,7 +33,6 @@ echo file_get_contents("foob", true);
 echo file_get_contents("./hi", 0, $context);
 echo file_get_contents("../oops");
 echo file_get_contents("./hi", 0, $context, 50000);
-ini_set("magic_quotes_runtime", 1);
 echo file_get_contents("./hi");
 echo file_get_contents("./hi", 0, $context, 0, 0);
 ?>
@@ -60,7 +59,6 @@ echo file_get_contents("foob", true);
 echo file_get_contents("./hi", 0, $context);
 echo file_get_contents("../oops");
 echo file_get_contents("./hi", 0, $context, 50000);
-ini_set("magic_quotes_runtime", 1);
 echo file_get_contents("./hi");
 echo file_get_contents("./hi", 0, $context, 0, 0);
 ?>
@@ -78,7 +76,6 @@ echo file_get_contents("foob", true);
 echo file_get_contents("./hi", 0, $context);
 echo file_get_contents("../oops");
 echo file_get_contents("./hi", 0, $context, 50000);
-ini_set("magic_quotes_runtime", 1);
 echo file_get_contents("./hi");
 echo file_get_contents("./hi", 0, $context, 0, 0);
 ?>
@@ -87,17 +84,16 @@ Warning: file_get_contents(phar://%sfgc_edgecases.phar.php/oops): failed to open
 
 Warning: file_get_contents(): Failed to seek to position 50000 in the stream in phar://%sfgc_edgecases.phar.php/foo/hi on line %d
 <?php
-echo file_get_contents(\"foo/\" . basename(__FILE__));
+echo file_get_contents("foo/" . basename(__FILE__));
 $context = stream_context_create();
-file_get_contents(\"./hi\", 0, $context, 0, -1);
-echo file_get_contents(\"foob\");
-set_include_path(\"%stests\");
-echo file_get_contents(\"foob\", true);
-echo file_get_contents(\"./hi\", 0, $context);
-echo file_get_contents(\"../oops\");
-echo file_get_contents(\"./hi\", 0, $context, 50000);
-ini_set(\"magic_quotes_runtime\", 1);
-echo file_get_contents(\"./hi\");
-echo file_get_contents(\"./hi\", 0, $context, 0, 0);
+file_get_contents("./hi", 0, $context, 0, -1);
+echo file_get_contents("foob");
+set_include_path("%stests");
+echo file_get_contents("foob", true);
+echo file_get_contents("./hi", 0, $context);
+echo file_get_contents("../oops");
+echo file_get_contents("./hi", 0, $context, 50000);
+echo file_get_contents("./hi");
+echo file_get_contents("./hi", 0, $context, 0, 0);
 ?>
 ===DONE===
index 429d2a66bc91434b529b34ca5629b095c8d1d720..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,22 +0,0 @@
---TEST--
-SplFileObject::fwrite function - writing with magic_quotes_runtime ini set 
---FILE--
-<?php
-ini_set('magic_quotes_runtime',true);
-$file = dirname(__FILE__).'/SplFileObject_fwrite_variation_002.txt';
-if(file_exists($file)) {
-       unlink($file);
-}
-$obj = New SplFileObject($file,'w');
-$obj->fwrite('"test" \'write\'');
-var_dump(file_get_contents($file));
-?>
---CLEAN--
-<?php
-$file = dirname(__FILE__).'/SplFileObject_fwrite_variation_002.txt';
-if(file_exists($file)) {
-       unlink($file);
-}
-?>
---EXPECT--
-string(18) "\"test\" \'write\'"
index 0f42cd7c8792545a2f6e5d372a436745b65f8c44..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,77 +0,0 @@
---TEST--
-various magic quotes tests
---INI--
-error_reporting=14335
---FILE--
-<?php
-
-$filename = dirname(__FILE__)."/magic_quotes.dat";
-
-var_dump(get_magic_quotes_runtime());
-var_dump(get_magic_quotes_runtime("blah"));
-
-file_put_contents($filename, "some'content'here\"and}there");
-
-var_dump(set_magic_quotes_runtime(true));
-var_dump(get_magic_quotes_runtime());
-var_dump(set_magic_quotes_runtime(-1));
-var_dump(get_magic_quotes_runtime());
-
-var_dump(file_get_contents($filename));
-
-var_dump(set_magic_quotes_runtime(0));
-var_dump(get_magic_quotes_runtime());
-
-var_dump(file_get_contents($filename));
-
-var_dump(set_magic_quotes_runtime(1));
-var_dump(get_magic_quotes_runtime());
-
-file_put_contents($filename, "some'content'here\"and}there");
-
-var_dump(file_get_contents($filename));
-
-var_dump(set_magic_quotes_runtime(0));
-var_dump(set_magic_quotes_runtime());
-var_dump(get_magic_quotes_runtime());
-
-var_dump(file_get_contents($filename));
-
-
-@unlink($filename);
-
-echo "Done\n";
-?>
---EXPECTF-- 
-int(0)
-int(0)
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-int(1)
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-int(1)
-string(30) "some\'content\'here\"and}there"
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-int(0)
-string(27) "some'content'here"and}there"
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-int(1)
-string(30) "some\'content\'here\"and}there"
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-
-Warning: set_magic_quotes_runtime() expects exactly 1 parameter, 0 given in %s on line %d
-NULL
-int(0)
-string(27) "some'content'here"and}there"
-Done
index 7db0d1cc781f2754c82f1f15cb3335a49d20d285..c7a72de944d04596e2d678fda499026fe3aa52c4 100644 (file)
@@ -1,20 +1,17 @@
---TEST--\r
-Test function get_cfg_var() by calling deprecated option\r
---CREDITS--\r
-Francesco Fullone ff@ideato.it\r
-#PHPTestFest Cesena Italia on 2009-06-20\r
---INI--\r
-magic_quotes_gpc=1\r
---SKIPIF--\r
-<?php if (version_compare(PHP_VERSION, "5.3", "<")) die("skip requires 5.3 or greater"); ?>\r
---FILE--\r
-<?php\r
-echo "*** Test by calling method or function with deprecated option ***\n";\r
-var_dump(get_cfg_var( 'magic_quotes_gpc' ) );\r
-\r
-?>\r
---EXPECTF--\r
-Deprecated: Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in %s on line 0\r
-*** Test by calling method or function with deprecated option ***\r
-string(1) "1"\r
-\r
+--TEST--
+Test function get_cfg_var() by calling deprecated option
+--CREDITS--
+Francesco Fullone ff@ideato.it
+#PHPTestFest Cesena Italia on 2009-06-20
+--INI--
+magic_quotes_gpc=1
+--SKIPIF--
+<?php if (version_compare(PHP_VERSION, "5.3", "<")) die("skip requires 5.3 or greater"); ?>
+--FILE--
+<?php
+echo "*** Test by calling method or function with deprecated option ***\n";
+var_dump(get_cfg_var( 'magic_quotes_gpc' ) );
+
+?>
+--EXPECTF--
+Fatal error: Directive 'magic_quotes_gpc' is no longer available in PHP in Unknown on line 0
index cfa4dcc6816b98010cea46b149a634fe255fdca7..b1c694a72068eccca1f85f00835bf2b8db5c71e8 100644 (file)
@@ -1,27 +1,13 @@
 --TEST--
 Test get_magic_quotes_gpc() function
---INI--
-magic_quotes_gpc = 0
 --FILE--
 <?php
 /* Prototype: int get_magic_quotes_gpc  ( void  )
- * Description: Gets the current configuration setting of magic quotes gpc
-*/
+ * This function is not supported anymore and will always return false
+ */
 
 echo "Simple testcase for get_magic_quotes_gpc() function\n";
-
-$g = get_magic_quotes_gpc();
-echo "\n-- magic quotes gpc set in INI file: " . $g . " --\n";
-
-echo "\n-- Set magic quotes gpc to 1 - not allowed so should fail! --\n";
-var_dump(ini_set("magic_quotes_gpc", 1));
-$g = get_magic_quotes_gpc();
-echo "\n-- magic quotes gpc after set: " . $g . " --\n";
-
-echo "\n-- Set magic quotes gpc to 0:  --\n";
-var_dump(ini_set("magic_quotes_gpc", 0));
-$g = get_magic_quotes_gpc();
-echo "\n-- magic quotes gpc after set: " . $g . " --\n";
+var_dump(get_magic_quotes_gpc());
 
 echo "\n-- Error cases --\n"; 
 // no checks on number of args
@@ -29,21 +15,16 @@ var_dump(get_magic_quotes_gpc(true));
 
 ?>
 ===DONE===
---EXPECT--
+--EXPECTF--
 Simple testcase for get_magic_quotes_gpc() function
 
--- magic quotes gpc set in INI file: 0 --
-
--- Set magic quotes gpc to 1 - not allowed so should fail! --
+Deprecated: Function get_magic_quotes_gpc() is deprecated in %s on line %d
 bool(false)
 
--- magic quotes gpc after set: 0 --
-
--- Set magic quotes gpc to 0:  --
-bool(false)
+-- Error cases --
 
--- magic quotes gpc after set: 0 --
+Deprecated: Function get_magic_quotes_gpc() is deprecated in %s on line %d
 
--- Error cases --
-int(0)
-===DONE===
\ No newline at end of file
+Warning: get_magic_quotes_gpc() expects exactly 0 parameters, 1 given in %s on line %d
+NULL
+===DONE===
index fca064d8405738a0d681fa18864e5c2e5a81c90b..abcef3577c372998ce68532b7f13b04fd49d82e9 100644 (file)
@@ -1,32 +1,14 @@
 --TEST--
 Test get_magic_quotes_runtime() function
---INI--
-magic_quotes_runtime = 0
 --FILE--
 <?php
 /* Prototype: int get_magic_quotes_runtime  ( void  )
- * Description: Gets the current active configuration setting of magic_quotes_runtime
-*/
+ * This function is not supported anymore and will always return false
+ */
 
 echo "Simple testcase for get_magic_quotes_runtime() function\n";
 
-$g = get_magic_quotes_runtime();
-echo "\n-- magic quotes runtime set in INI file: " . $g . " --\n";
-
-echo "\n-- Set magic quotes runtime to 1:  --\n";
-var_dump(set_magic_quotes_runtime(1));
-$g = get_magic_quotes_runtime();
-echo "\n-- magic quotes runtime after set: " . $g . " --\n";
-
-echo "\n-- Set magic quotes runtime to 0:  --\n";
-var_dump(set_magic_quotes_runtime(0));
-$g = get_magic_quotes_runtime();
-echo "\n-- magic quotes runtime after set: " . $g . " --\n";
-
-echo "\n-- Set magic quotes runtime to 1:  --\n";
-var_dump(set_magic_quotes_runtime(1));
-$g = get_magic_quotes_runtime();
-echo "\n-- magic quotes runtime after set: " . $g . " --\n";
+var_dump(get_magic_quotes_runtime());
 
 echo "\n-- Error cases --\n"; 
 // no checks on number of args
@@ -37,29 +19,13 @@ var_dump(get_magic_quotes_runtime(true));
 --EXPECTF--
 Simple testcase for get_magic_quotes_runtime() function
 
--- magic quotes runtime set in INI file: 0 --
-
--- Set magic quotes runtime to 1:  --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-
--- magic quotes runtime after set: 1 --
+Deprecated: Function get_magic_quotes_runtime() is deprecated in %s on line %d
+bool(false)
 
--- Set magic quotes runtime to 0:  --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-
--- magic quotes runtime after set: 0 --
-
--- Set magic quotes runtime to 1:  --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
+-- Error cases --
 
--- magic quotes runtime after set: 1 --
+Deprecated: Function get_magic_quotes_runtime() is deprecated in %s on line %d
 
--- Error cases --
-int(1)
+Warning: get_magic_quotes_runtime() expects exactly 0 parameters, 1 given in %s on line %d
+NULL
 ===DONE===
index 843dbe22f3054a42b3695affcc7542732317a315..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,204 +0,0 @@
---TEST--
-Test set_magic_quotes_runtime() function -  usage variation
---INI--
-magic_quotes_runtime = 0
---FILE--
-<?php
-/* Prototype: bool set_magic_quotes_runtime  ( int $new_setting  )
- * Description: Sets the current active configuration setting of magic_quotes_runtime
-*/
-
-echo "Simple testcase for set_magic_quotes_runtime() function\n";
-
-$g = get_magic_quotes_runtime();
-echo "magic quotes runtime set in INI file: ".$g."\n";
-
-// Prevent notices about undefines variables
-error_reporting(E_ALL & ~E_NOTICE);
-
-$unset_var = 10;
-unset ($unset_var);
-
-class fooClass {
-   function __toString() {
-       return "true";
-   }
-}
-
-$fp = fopen(__FILE__, "r");
-
-$values = array(
-
-             // int data
-/*1*/     0,
-             1,
-             12345,
-             -2345,
-       
-             // float data
-/*5*/     0.0,
-             10.5,
-             -10.5,
-             10.1234567e10,
-             10.7654321E-10,
-             .5,
-       
-             // null data
-/*11*/    NULL,
-             null,
-       
-             // boolean data
-/*13*/    true,
-             false,
-             TRUE,
-             FALSE,
-       
-             // empty data
-/*17*/    "",
-             '',
-       
-             // object data
-/*19*/    new fooClass(),
-             
-             // resource
-/*20*/    $fp,
-             
-             // undefined data
-/*21*/    $undefined_var,
-       
-             // unset data
-/*22*/    $unset_var
-);
-
-// loop through each element of the array for data
-
-$iterator = 1;
-foreach($values as $value) {
-      echo "-- Iterator $iterator --\n";
-      var_dump( set_magic_quotes_runtime($value) );
-      echo "New value of magic_quotes_runtime after last set is " . get_magic_quotes_runtime(). "\n";
-      $iterator++;
-};
-
-fclose($fp); 
-
-?>
-===DONE===
---EXPECTF--
-Simple testcase for set_magic_quotes_runtime() function
-magic quotes runtime set in INI file: 0
--- Iterator 1 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 0
--- Iterator 2 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 1
--- Iterator 3 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 1
--- Iterator 4 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 1
--- Iterator 5 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 0
--- Iterator 6 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 1
--- Iterator 7 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 1
--- Iterator 8 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 1
--- Iterator 9 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 1
--- Iterator 10 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 1
--- Iterator 11 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 0
--- Iterator 12 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 0
--- Iterator 13 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 1
--- Iterator 14 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 0
--- Iterator 15 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 1
--- Iterator 16 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 0
--- Iterator 17 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 0
--- Iterator 18 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 0
--- Iterator 19 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-
-Warning: set_magic_quotes_runtime() expects parameter 1 to be boolean, object given in %s on line %d
-NULL
-New value of magic_quotes_runtime after last set is 0
--- Iterator 20 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-
-Warning: set_magic_quotes_runtime() expects parameter 1 to be boolean, resource given in %s on line %d
-NULL
-New value of magic_quotes_runtime after last set is 0
--- Iterator 21 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 0
--- Iterator 22 --
-
-Deprecated: Function set_magic_quotes_runtime() is deprecated in %s on line %d
-bool(true)
-New value of magic_quotes_runtime after last set is 0
-===DONE===
index a5eab410b907b6ed6a3f9ca41bf88b90ad0897d3..6f01176d4e717654454a45be0a6858469ea7fb20 100644 (file)
@@ -1,5 +1,5 @@
 --TEST--
-addslashes() and stripslashes() functions, normal and sybase-style
+addslashes() and stripslashes() functions
 --FILE--
 <?php
 
@@ -9,15 +9,6 @@ for($i=0; $i<512; $i++) {
 }
 
 echo "Normal: ";
-ini_set('magic_quotes_sybase', 0);
-if($input === stripslashes(addslashes($input))) {
-       echo "OK\n";
-} else {
-       echo "FAILED\n";
-}
-
-echo "Sybase: ";
-ini_set('magic_quotes_sybase', 1);
 if($input === stripslashes(addslashes($input))) {
        echo "OK\n";
 } else {
@@ -27,4 +18,3 @@ if($input === stripslashes(addslashes($input))) {
 ?>
 --EXPECT--
 Normal: OK
-Sybase: OK
index 8f46ebe9a4b14a6d6a984b27e6196751c75677e0..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,196 +0,0 @@
---TEST--
-Test addslashes() function : usage variations - with magic_quotes_sybase directive ON
---FILE--
-<?php
-/* Prototype  : string addslashes ( string $str )
- * Description: Returns a string with backslashes before characters that need to be quoted in database queries etc.
- * Source code: ext/standard/string.c
-*/
-
-/*
- * Test addslashes() with PHP directive magic_quotes_sybase set ON 
-*/
-
-echo "*** Testing addslashes() : with php directive magic_quotes_sybase set ON ***\n";
-
-// setting ON the php directive magic_quotes_sybase
-ini_set("magic_quotes_sybase", "1");
-
-// initialising a heredoc string
-$heredoc_string = <<<EOT
-This is line 1 of 'heredoc' string
-This is line 2 of "heredoc" string
-EOT;
-
-$heredoc_null_string =<<<EOT
-EOT;
-// initialising the string array
-$str_array = array( 
-                    // string without any characters that can be backslashed
-                    'Hello world',
-                    // string with single quotes
-                    "how're you doing?", 
-                    "don't disturb u'r neighbours",
-                    "don't disturb u'r neighbours''",
-                    '',
-                    '\'',
-                    "'",
-                    
-                    // string with double quotes
-                    'he said, "he will be on leave"',
-                    'he said, ""he will be on leave"',
-                    '"""PHP"""',
-                    "",
-                    "\"",
-                    '"',
-                   "hello\"",
-                         
-                    // string with backslash characters
-                    'Is your name Ram\Krishna?',
-                    '\\0.0.0.0',
-                    'c:\php\testcase\addslashes',
-                    '\\',
-
-                    // string with nul characters
-                    'hello'.chr(0).'world',
-                    chr(0).'hello'.chr(0),
-                    chr(0).chr(0).'hello',
-                    chr(0),
-
-                    // mixed strings
-                    "'\\0.0.0.0'",
-                    "'\\0.0.0.0'".chr(0),
-                    chr(0)."'c:\php\'",
-                    '"\\0.0.0.0"',
-                    '"c:\php\"'.chr(0)."'",
-                    '"hello"'."'world'".chr(0).'//',
-
-                   // string with hexadecimal number
-                    "0xABCDEF0123456789",
-                    "\xabcdef0123456789",
-                    '!@#$%&*@$%#&/;:,<>',
-                    "hello\x00world",
-
-                    // heredoc strings
-                    $heredoc_string,
-                    $heredoc_null_string
-                  );
-
-$count = 1;
-// looping to test for all strings in $str_array
-foreach( $str_array as $str )  {
-  echo "\n-- Iteration $count --\n";
-  var_dump( addslashes($str) );
-  $count ++;
-}
-
-echo "Done\n";
-?>
---EXPECTF--
-*** Testing addslashes() : with php directive magic_quotes_sybase set ON ***
-
--- Iteration 1 --
-string(11) "Hello world"
-
--- Iteration 2 --
-string(18) "how''re you doing?"
-
--- Iteration 3 --
-string(30) "don''t disturb u''r neighbours"
-
--- Iteration 4 --
-string(34) "don''t disturb u''r neighbours''''"
-
--- Iteration 5 --
-string(0) ""
-
--- Iteration 6 --
-string(2) "''"
-
--- Iteration 7 --
-string(2) "''"
-
--- Iteration 8 --
-string(30) "he said, "he will be on leave""
-
--- Iteration 9 --
-string(31) "he said, ""he will be on leave""
-
--- Iteration 10 --
-string(9) """"PHP""""
-
--- Iteration 11 --
-string(0) ""
-
--- Iteration 12 --
-string(1) """
-
--- Iteration 13 --
-string(1) """
-
--- Iteration 14 --
-string(6) "hello""
-
--- Iteration 15 --
-string(25) "Is your name Ram\Krishna?"
-
--- Iteration 16 --
-string(8) "\0.0.0.0"
-
--- Iteration 17 --
-string(26) "c:\php\testcase\addslashes"
-
--- Iteration 18 --
-string(1) "\"
-
--- Iteration 19 --
-string(12) "hello\0world"
-
--- Iteration 20 --
-string(9) "\0hello\0"
-
--- Iteration 21 --
-string(9) "\0\0hello"
-
--- Iteration 22 --
-string(2) "\0"
-
--- Iteration 23 --
-string(12) "''\0.0.0.0''"
-
--- Iteration 24 --
-string(14) "''\0.0.0.0''\0"
-
--- Iteration 25 --
-string(13) "\0''c:\php\''"
-
--- Iteration 26 --
-string(10) ""\0.0.0.0""
-
--- Iteration 27 --
-string(13) ""c:\php\"\0''"
-
--- Iteration 28 --
-string(20) ""hello"''world''\0//"
-
--- Iteration 29 --
-string(18) "0xABCDEF0123456789"
-
--- Iteration 30 --
-string(15) "«cdef0123456789"
-
--- Iteration 31 --
-string(18) "!@#$%&*@$%#&/;:,<>"
-
--- Iteration 32 --
-string(12) "hello\0world"
-
--- Iteration 33 --
-string(71) "This is line 1 of ''heredoc'' string
-This is line 2 of "heredoc" string"
-
--- Iteration 34 --
-string(0) ""
-Done
index 3c56e1a414dc97091b9557438d989ba29508e0ea..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,30 +0,0 @@
---TEST--
-Bug #22904 (magic mode failed for cybase with '\0')
---FILE--
-not active yet
-<?php
-
-/*
-ini_set("magic_quotes_sybase","on");
-test();
-ini_set("magic_quotes_sybase","off");
-test();
-*/
-function test(){
-       $buf = 'g\g"\0g'."'";
-       $slashed = addslashes($buf);
-       echo "$buf\n";
-       echo "$slashed\n";
-       echo stripslashes($slashed."\n");
-/*
-g\g"\0g'
-g\\g"\\0g''
-g\g"\0g'
-g\g"\0g'
-g\\g\"\\0g\'
-g\g"\0g'
-*/
-}
-?>
---EXPECT--
-not active yet
index 06e614374ebb3a3295c5c557709fa2894a3d66ab..f0f5981e8f36336c6cc678e5799f04a6a9b39779 100644 (file)
Binary files a/ext/standard/tests/strings/parse_str_basic3.phpt and b/ext/standard/tests/strings/parse_str_basic3.phpt differ
index 0507e04960797c83bdef221c4da36a8b8c01ea69..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
Binary files a/ext/standard/tests/strings/stripslashes_variation5.phpt and b/ext/standard/tests/strings/stripslashes_variation5.phpt differ
index 4245d8ef0c4ab5b00133c7da4d1730d3fcc852c6..3a962be31a41e594f030d15511bbf40b967975eb 100644 (file)
@@ -6,8 +6,6 @@ if(!extension_loaded('sysvsem') || !extension_loaded('sysvshm')) {
        die("skip Both sysvsem and sysvshm required");
 }
 ?>
---INI--
-magic_quotes_runtime=0
 --FILE--
 <?php
 $MEMSIZE = 512;  //  size of shared memory to allocate
index 62d597c5f8e5a3b2d55a9dbb4a795ec49c342f23..9c03b553cc6e64109cc4b1ae80b9da6504a793aa 100644 (file)
@@ -5,8 +5,6 @@ XML parser test, function callbacks
 require_once("skipif.inc");
 XML_SAX_IMPL == 'libxml' && die('skip this test is not intended for libxml SAX parser');
 ?>
---INI--
-magic_quotes_runtime=0
 --FILE--
 <?php
 chdir(dirname(__FILE__));
index 8ae8dfbe66d1256e6b6f8c65ee2c35bccc570084..ce547e8acc987161838d7d71bf3f6017608a05b7 100644 (file)
@@ -5,8 +5,6 @@ XML parser test, object tuple callbacks
 require_once("skipif.inc");
 XML_SAX_IMPL == 'libxml' && die('skip this test is not intended for libxml SAX parser');
 ?>
---INI--
-magic_quotes_runtime=0
 --FILE--
 <?php
 chdir(dirname(__FILE__));
index 311c81acfbf4634a122360b0546a404d17080c60..6b0c3f5c5a44c5ac4cea408e195e4dcc0e92233a 100644 (file)
@@ -5,8 +5,6 @@ XML parser test, xml_set_object callbacks
 require_once("skipif.inc");
 XML_SAX_IMPL == 'libxml' && die('skip this test is not intended for libxml SAX parser');
 ?>
---INI--
-magic_quotes_runtime=0
 --FILE--
 <?php
 chdir(dirname(__FILE__));
index 78840ee122762a8b4f7308f528ec1d5f4ec6bbe6..245a93fc10af9987faf7e9fa0892c19527373b1c 100644 (file)
@@ -2,8 +2,6 @@
 XML parser case folding test
 --SKIPIF--
 <?php include("skipif.inc"); ?>
---INI--
-magic_quotes_runtime=0
 --FILE--
 <?php
 chdir(dirname(__FILE__));
index 5439a2a918c12f581831a23411744889d5ecc7bc..37df25419037bb1177f6c510a2263034c992b00e 100755 (executable)
@@ -2,8 +2,6 @@
 XML parser test using closures as callbacks
 --SKIPIF--
 <?php include("skipif.inc"); ?>
---INI--
-magic_quotes_runtime=0
 --FILE--
 <?php
 chdir(dirname(__FILE__));
index a758b8c7b3f3b284a3a10c4f73d3c7af20fc89eb..ebc7d82b9513dfa0fe4ae6157141f9f12baf90ab 100644 (file)
@@ -12,9 +12,6 @@ var_dump(gzfile(1,1,1));
 var_dump(gzfile(dirname(__FILE__)."/004.txt.gz"));
 var_dump(gzfile(dirname(__FILE__)."/004.txt.gz", 1));
 
-ini_set("magic_quotes_runtime", 1);
-var_dump(gzfile(dirname(__FILE__)."/004.txt.gz", -1));
-
 echo "Done\n";
 ?>
 --EXPECTF--    
@@ -66,24 +63,4 @@ array(6) {
   string(39) "and I know that it descends down on me
 "
 }
-array(6) {
-  [0]=>
-  string(37) "When you\'re taught through feelings
-"
-  [1]=>
-  string(26) "Destiny flying high above
-"
-  [2]=>
-  string(38) "all I know is that you can realize it
-"
-  [3]=>
-  string(18) "Destiny who cares
-"
-  [4]=>
-  string(19) "as it turns around
-"
-  [5]=>
-  string(39) "and I know that it descends down on me
-"
-}
 Done
index 7ae029251bbde550e7f8de2e3116f4d7f8b7d531..b09b8a4b5c884597c5493bbbb4013791c50fcc48 100644 (file)
@@ -3,6 +3,6 @@
 #define PHP_MAJOR_VERSION 5
 #define PHP_MINOR_VERSION 4
 #define PHP_RELEASE_VERSION 0
-#define PHP_EXTRA_VERSION "alpha3"
+#define PHP_EXTRA_VERSION "alpha3-dev"
 #define PHP_VERSION "5.4.0alpha3-dev"
 #define PHP_VERSION_ID 50400
index 4eb698fa05b70aaae15a56c3055ff7641910ee85..181745ea5b693ab17d87bd89de31a867df63fd0a 100644 (file)
@@ -1,7 +1,5 @@
 --TEST--
 Cookies test#2
---INI--
-magic_quotes_gpc=0
 --COOKIE--
 c o o k i e=value; c o o k i e= v a l u e ;;c%20o+o k+i%20e=v;name="value","value",UEhQIQ==;UEhQIQ==foo
 --FILE--
index 847eeac824f890558dffa3da3ab8f5b7395c8acc..497d3514e0e2961a4331420fa23047d2d3c7ea22 100644 (file)
@@ -1,7 +1,6 @@
 --TEST--
 Test HTTP_RAW_POST_DATA creation
 --INI--
-magic_quotes_gpc=0
 always_populate_raw_post_data=1
 --POST--
 a=ABC&y=XYZ&c[]=1&c[]=2&c[a]=3
index bafcac8091a4632e36eec6a5892c358bda9562fb..58191bcd61daf5e9dd6b5ffa4e73f6a91aa2c565 100644 (file)
@@ -1,7 +1,6 @@
 --TEST--
 Test HTTP_RAW_POST_DATA with excessive post length
 --INI--
-magic_quotes_gpc=0
 always_populate_raw_post_data=1
 post_max_size=1K
 --POST--
index 957aa1972cb410c788371c5d858070671f82ba38..b98a31f430772d3c2b9364e87959248bca585fbf 100644 (file)
@@ -1,7 +1,6 @@
 --TEST--
 Registration of HTTP_RAW_POST_DATA due to unknown content-type
 --INI--
-magic_quotes_gpc=0
 always_populate_raw_post_data=0
 --POST_RAW--
 Content-Type: unknown/type
index ae5d78d50dd9823d60ef265bda0c9e5c53233c4f..aa001f65a37edb75a644d8119b80c72bb68427c5 100644 (file)
@@ -1,7 +1,6 @@
 --TEST--
 Handling of max_input_nesting_level being reached
 --INI--
-magic_quotes_gpc=0
 always_populate_raw_post_data=0
 display_errors=0
 max_input_nesting_level=10
index 457e5eb7b3ed4823db9872bff03cf46a9f9f7e39..e588bec767a53721e19ea84426c0e2c3d1faaf27 100644 (file)
@@ -1,3 +1,68 @@
+--TEST--
+Bug #46313 (Magic quotes broke $_FILES)
+--SKIPIF--
+<?php if(substr(PHP_OS, 0, 3) != "WIN") die("skip Windows-only test"); ?>
+--INI--
+magic_quotes_gpc=1
+file_uploads=1
+register_globals=1
+--POST_RAW--
+Content-Type: multipart/form-data; boundary=---------------------------20896060251896012921717172737
+-----------------------------20896060251896012921717172737
+Content-Disposition: form-data; name="o1'file"; filename="o1'file.png"
+Content-Type: text/plain-file1
+
+1
+-----------------------------20896060251896012921717172737
+Content-Disposition: form-data; name="o2'file"; filename="o2'file2.txt"
+Content-Type: text/plain-file2
+
+2
+-----------------------------20896060251896012921717172737--
+--FILE--
+<?php
+var_dump($_FILES);
+var_dump($GLOBALS["o1\'file_name"]);
+var_dump($GLOBALS["o1\'file_name"] === $_FILES["o1\'file"]["name"]);
+var_dump($GLOBALS["o1\'file"]);
+var_dump($GLOBALS["o1\'file"] === $_FILES["o1\'file"]["tmp_name"]);
+?>
+--EXPECTF--
+array(2) {
+  ["o1\'file"]=>
+  array(5) {
+    ["name"]=>
+    string(12) "o1"
+    ["type"]=>
+    string(16) "text/plain-file1"
+    ["tmp_name"]=>
+    string(14) "%s"
+    ["error"]=>
+    int(0)
+    ["size"]=>
+    int(1)
+  }
+  ["o2\'file"]=>
+  array(5) {
+    ["name"]=>
+    string(13) "o2"
+    ["type"]=>
+    string(16) "text/plain-file2"
+    ["tmp_name"]=>
+    string(14) "%s"
+    ["error"]=>
+    int(0)
+    ["size"]=>
+    int(1)
+  }
+}
+string(12) "o1"
+bool(true)
+string(%d) "%s"
+bool(true)
+Warning: Directive 'register_globals' is deprecated in PHP 5.3 and greater in Unknown on line 0
+Warning: Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0
+
 --TEST--
 Bug #46313 (Magic quotes broke $_FILES)
 --SKIPIF--
index 6c1f65c935c2cdccd428b5cc8bad675090ab552c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,54 +0,0 @@
---TEST--
-Bug #46313 (Magic quotes broke $_FILES)
---SKIPIF--
-<?php if(substr(PHP_OS, 0, 3) == "WIN") die("skip non-Windows test"); ?>
---INI--
-magic_quotes_gpc=1
-file_uploads=1
-display_errors=0
---POST_RAW--
-Content-Type: multipart/form-data; boundary=---------------------------20896060251896012921717172737
------------------------------20896060251896012921717172737
-Content-Disposition: form-data; name="o1'file"; filename="o1'file.png"
-Content-Type: text/plain-file1
-
-1
------------------------------20896060251896012921717172737
-Content-Disposition: form-data; name="o2'file"; filename="o2'file2.txt"
-Content-Type: text/plain-file2
-
-2
------------------------------20896060251896012921717172737--
---FILE--
-<?php
-var_dump($_FILES);
-?>
---EXPECTF--
-array(2) {
-  ["o1\'file"]=>
-  array(5) {
-    ["name"]=>
-    string(12) "o1\'file.png"
-    ["type"]=>
-    string(16) "text/plain-file1"
-    ["tmp_name"]=>
-    string(%d) "%s"
-    ["error"]=>
-    int(0)
-    ["size"]=>
-    int(1)
-  }
-  ["o2\'file"]=>
-  array(5) {
-    ["name"]=>
-    string(13) "o2\'file2.txt"
-    ["type"]=>
-    string(16) "text/plain-file2"
-    ["tmp_name"]=>
-    string(%d) "%s"
-    ["error"]=>
-    int(0)
-    ["size"]=>
-    int(1)
-  }
-}
index d35cd534c2cc39180ba0ed40bcf8bdaa32c8aa4e..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,20 +0,0 @@
---TEST--
-Testing magic_quotes_gpc
---INI--
-display_errors=0
-magic_quotes_gpc=1
---GET--
-a='&b="&c=\"
---FILE--
-<?php 
-
-foreach ($_GET AS $key => $value)
-{
-       echo $key . ": " . $value . "\n";
-}
-
-?>
---EXPECT--
-a: \'
-b: \"
-c: \\\"
index 382ab94d2d176c390ad2c3ce5ff529f1910023dd..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,13 +0,0 @@
---TEST--
-Test if magic_quotes_gpc works as expected
---INI--
-display_errors=0
-magic_quotes_gpc=1
---GET--
-a=abc'"%00123
---FILE--
-<?php
-echo $_GET['a'],"\n";
-?>
---EXPECT--
-abc\'\"\0123