3v4l.org

run code in 300+ PHP versions simultaneously
<?php //Source: https://bugs.php.net/bug.php?id=53437 $dp = new DatePeriod(new DateTime('2010-01-01 UTC'), new DateInterval('P1D'), 2); echo "Original:\r\n"; foreach($dp as $dt) { echo $dt->format('Y-m-d H:i:s')."\r\n"; } echo "\r\n"; $ser = serialize($dp); // $ser is: O:10:"DatePeriod":0:{} // Create dangerous instance $dpu = unserialize($ser); // $dpu has invalid values… echo "Unserialized:\r\n"; // …which leads to CRASH: foreach($dpu as $dt) { echo $dt->format('Y-m-d H:i:s')."\r\n"; }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 14, Position 2 = 21
Branch analysis from position: 14
2 jumps found. (Code = 78) Position 1 = 15, Position 2 = 21
Branch analysis from position: 15
1 jumps found. (Code = 42) Position 1 = 14
Branch analysis from position: 14
Branch analysis from position: 21
2 jumps found. (Code = 77) Position 1 = 33, Position 2 = 40
Branch analysis from position: 33
2 jumps found. (Code = 78) Position 1 = 34, Position 2 = 40
Branch analysis from position: 34
1 jumps found. (Code = 42) Position 1 = 33
Branch analysis from position: 33
Branch analysis from position: 40
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 40
Branch analysis from position: 21
filename:       /in/dmr3n
function name:  (null)
number of ops:  42
compiled vars:  !0 = $dp, !1 = $dt, !2 = $ser, !3 = $dpu
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    4     0  E >   NEW                                              $4      'DatePeriod'
          1        NEW                                              $5      'DateTime'
          2        SEND_VAL_EX                                              '2010-01-01+UTC'
          3        DO_FCALL                                      0          
          4        SEND_VAR_NO_REF_EX                                       $5
          5        NEW                                              $7      'DateInterval'
          6        SEND_VAL_EX                                              'P1D'
          7        DO_FCALL                                      0          
          8        SEND_VAR_NO_REF_EX                                       $7
          9        SEND_VAL_EX                                              2
         10        DO_FCALL                                      0          
         11        ASSIGN                                                   !0, $4
    6    12        ECHO                                                     'Original%3A%0D%0A'
    7    13      > FE_RESET_R                                       $11     !0, ->21
         14    > > FE_FETCH_R                                               $11, !1, ->21
    8    15    >   INIT_METHOD_CALL                                         !1, 'format'
         16        SEND_VAL_EX                                              'Y-m-d+H%3Ai%3As'
         17        DO_FCALL                                      0  $12     
         18        CONCAT                                           ~13     $12, '%0D%0A'
         19        ECHO                                                     ~13
    7    20      > JMP                                                      ->14
         21    >   FE_FREE                                                  $11
   10    22        ECHO                                                     '%0D%0A'
   12    23        INIT_FCALL                                               'serialize'
         24        SEND_VAR                                                 !0
         25        DO_ICALL                                         $14     
         26        ASSIGN                                                   !2, $14
   15    27        INIT_FCALL                                               'unserialize'
         28        SEND_VAR                                                 !2
         29        DO_ICALL                                         $16     
         30        ASSIGN                                                   !3, $16
   17    31        ECHO                                                     'Unserialized%3A%0D%0A'
   19    32      > FE_RESET_R                                       $18     !3, ->40
         33    > > FE_FETCH_R                                               $18, !1, ->40
   20    34    >   INIT_METHOD_CALL                                         !1, 'format'
         35        SEND_VAL_EX                                              'Y-m-d+H%3Ai%3As'
         36        DO_FCALL                                      0  $19     
         37        CONCAT                                           ~20     $19, '%0D%0A'
         38        ECHO                                                     ~20
   19    39      > JMP                                                      ->33
         40    >   FE_FREE                                                  $18
   21    41      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
158.51 ms | 1400 KiB | 17 Q