3v4l.org

run code in 300+ PHP versions simultaneously
<?php phpinfo(); $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 = 16, Position 2 = 23
Branch analysis from position: 16
2 jumps found. (Code = 78) Position 1 = 17, Position 2 = 23
Branch analysis from position: 17
1 jumps found. (Code = 42) Position 1 = 16
Branch analysis from position: 16
Branch analysis from position: 23
2 jumps found. (Code = 77) Position 1 = 35, Position 2 = 42
Branch analysis from position: 35
2 jumps found. (Code = 78) Position 1 = 36, Position 2 = 42
Branch analysis from position: 36
1 jumps found. (Code = 42) Position 1 = 35
Branch analysis from position: 35
Branch analysis from position: 42
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 42
Branch analysis from position: 23
filename:       /in/D5GOs
function name:  (null)
number of ops:  44
compiled vars:  !0 = $dp, !1 = $dt, !2 = $ser, !3 = $dpu
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   INIT_FCALL                                               'phpinfo'
          1        DO_ICALL                                                 
    5     2        NEW                                              $5      'DatePeriod'
          3        NEW                                              $6      'DateTime'
          4        SEND_VAL_EX                                              '2010-01-01+UTC'
          5        DO_FCALL                                      0          
          6        SEND_VAR_NO_REF_EX                                       $6
          7        NEW                                              $8      'DateInterval'
          8        SEND_VAL_EX                                              'P1D'
          9        DO_FCALL                                      0          
         10        SEND_VAR_NO_REF_EX                                       $8
         11        SEND_VAL_EX                                              2
         12        DO_FCALL                                      0          
         13        ASSIGN                                                   !0, $5
    7    14        ECHO                                                     'Original%3A%0D%0A'
    8    15      > FE_RESET_R                                       $12     !0, ->23
         16    > > FE_FETCH_R                                               $12, !1, ->23
    9    17    >   INIT_METHOD_CALL                                         !1, 'format'
         18        SEND_VAL_EX                                              'Y-m-d+H%3Ai%3As'
         19        DO_FCALL                                      0  $13     
         20        CONCAT                                           ~14     $13, '%0D%0A'
         21        ECHO                                                     ~14
    8    22      > JMP                                                      ->16
         23    >   FE_FREE                                                  $12
   11    24        ECHO                                                     '%0D%0A'
   13    25        INIT_FCALL                                               'serialize'
         26        SEND_VAR                                                 !0
         27        DO_ICALL                                         $15     
         28        ASSIGN                                                   !2, $15
   16    29        INIT_FCALL                                               'unserialize'
         30        SEND_VAR                                                 !2
         31        DO_ICALL                                         $17     
         32        ASSIGN                                                   !3, $17
   18    33        ECHO                                                     'Unserialized%3A%0D%0A'
   20    34      > FE_RESET_R                                       $19     !3, ->42
         35    > > FE_FETCH_R                                               $19, !1, ->42
   21    36    >   INIT_METHOD_CALL                                         !1, 'format'
         37        SEND_VAL_EX                                              'Y-m-d+H%3Ai%3As'
         38        DO_FCALL                                      0  $20     
         39        CONCAT                                           ~21     $20, '%0D%0A'
         40        ECHO                                                     ~21
   20    41      > JMP                                                      ->35
         42    >   FE_FREE                                                  $19
   22    43      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
168.97 ms | 1405 KiB | 19 Q