File tree 3 files changed +47
-1
lines changed 3 files changed +47
-1
lines changed Original file line number Diff line number Diff line change @@ -18,6 +18,8 @@ PHP NEWS
18
18
non-printable characters in string literals). (nielsdos, WangYihang)
19
19
. Add support for backtraces for fatal errors. (enorris)
20
20
. Fixed bug GH-17442 (Engine UAF with reference assign and dtor). (nielsdos)
21
+ . Improved error message of UnhandledMatchError for
22
+ zend.exception_string_param_max_len=0. (timwolla)
21
23
22
24
- Curl:
23
25
. Added curl_multi_get_handles(). (timwolla)
Original file line number Diff line number Diff line change
1
+ --TEST--
2
+ Match expression error messages (exception_string_param_max_len=0)
3
+ --INI--
4
+ zend.exception_string_param_max_len=0
5
+ --FILE--
6
+ <?php
7
+
8
+ class Beep {}
9
+
10
+ function test (mixed $ var ) {
11
+ try {
12
+ match ($ var ) {};
13
+ } catch (UnhandledMatchError $ e ) {
14
+ print $ e ->getMessage () . PHP_EOL ;
15
+ }
16
+ }
17
+
18
+ test (null );
19
+ test (1 );
20
+ test (5.5 );
21
+ test (5.0 );
22
+ test ("foo " );
23
+ test (true );
24
+ test (false );
25
+ test ([1 , 2 , 3 ]);
26
+ test (new Beep ());
27
+ // Testing long strings.
28
+ test (str_repeat ('e ' , 100 ));
29
+ test (str_repeat ("e \n" , 100 ));
30
+ ?>
31
+ --EXPECT--
32
+ Unhandled match case NULL
33
+ Unhandled match case 1
34
+ Unhandled match case 5.5
35
+ Unhandled match case 5.0
36
+ Unhandled match case of type string
37
+ Unhandled match case true
38
+ Unhandled match case false
39
+ Unhandled match case of type array
40
+ Unhandled match case of type Beep
41
+ Unhandled match case of type string
42
+ Unhandled match case of type string
Original file line number Diff line number Diff line change @@ -874,10 +874,12 @@ ZEND_COLD zend_never_inline void zend_magic_get_property_type_inconsistency_erro
874
874
875
875
ZEND_COLD void zend_match_unhandled_error (const zval * value )
876
876
{
877
+ zend_long max_len = EG (exception_string_param_max_len );
877
878
smart_str msg = {0 };
878
879
if (
879
880
EG (exception_ignore_args )
880
- || smart_str_append_zval (& msg , value , EG (exception_string_param_max_len )) != SUCCESS
881
+ || (Z_TYPE_P (value ) == IS_STRING && max_len == 0 )
882
+ || smart_str_append_zval (& msg , value , max_len ) != SUCCESS
881
883
) {
882
884
smart_str_appendl (& msg , "of type " , sizeof ("of type " )- 1 );
883
885
smart_str_appends (& msg , zend_zval_type_name (value ));
You can’t perform that action at this time.
0 commit comments