Skip to content

null pointer dereference in streams.c #24531

Open

Description

@YuanchengJiang

Description

The following code:

<?php
try {
$targets = [
$base . '.phar.png',
$base . '.pharma.phar.html',
];
foreach ($targets as $fusion => $target) {
$source = $base . ".source-$i.phar.zip";
$phar = new Phar($source);
$phar->addFromString('payload', 'payload');
unset($phar);
rename($source, $target);
}
} catch (\Throwable $_ff_e) {}

Resulted in this output:

/home/phpfuzz/WorkSpace/flowfusion/php-src/main/streams/streams.c:1728:7: runtime error: member access within null pointer of type 'php_stream' (aka 'struct _php_stream')
    #0 0x57390c2 in _php_stream_copy_to_stream_ex /home/phpfuzz/WorkSpace/flowfusion/php-src/main/streams/streams.c:1728:7
    #1 0x3b18b1d in phar_zip_changed_apply_int /home/phpfuzz/WorkSpace/flowfusion/php-src/ext/phar/zip.c:1154:66
    #2 0x3b073ce in phar_zip_changed_apply /home/phpfuzz/WorkSpace/flowfusion/php-src/ext/phar/zip.c:1177:9
    #3 0x685bd7d in zend_hash_apply_with_argument /home/phpfuzz/WorkSpace/flowfusion/php-src/Zend/zend_hash.c:2357:13
    #4 0x3b0472e in phar_zip_flush /home/phpfuzz/WorkSpace/flowfusion/php-src/ext/phar/zip.c:1425:2
    #5 0x3a0deac in phar_flush_ex /home/phpfuzz/WorkSpace/flowfusion/php-src/ext/phar/phar.c:2543:10
    #6 0x39efcc4 in phar_flush /home/phpfuzz/WorkSpace/flowfusion/php-src/ext/phar/phar.c:2496:9
    #7 0x398c460 in phar_add_file /home/phpfuzz/WorkSpace/flowfusion/php-src/ext/phar/phar_object.c:3635:3
    #8 0x3991ce8 in zim_Phar_addFromString /home/phpfuzz/WorkSpace/flowfusion/php-src/ext/phar/phar_object.c:3839:2
    #9 0x62da021 in ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HANDLER /home/phpfuzz/WorkSpace/flowfusion/php-src/Zend/zend_vm_execute.h:2017:4
    #10 0x6093917 in execute_ex /home/phpfuzz/WorkSpace/flowfusion/php-src/Zend/zend_vm_execute.h:110617:12
    #11 0x6095f88 in zend_execute /home/phpfuzz/WorkSpace/flowfusion/php-src/Zend/zend_vm_execute.h:116055:2
    #12 0x6ce3c0c in zend_execute_script /home/phpfuzz/WorkSpace/flowfusion/php-src/Zend/zend.c:1986:3
    #13 0x55c5f4d in php_execute_script_ex /home/phpfuzz/WorkSpace/flowfusion/php-src/main/main.c:2636:13
    #14 0x55c7058 in php_execute_script /home/phpfuzz/WorkSpace/flowfusion/php-src/main/main.c:2676:9
    #15 0x6cf7182 in do_cli /home/phpfuzz/WorkSpace/flowfusion/php-src/sapi/cli/php_cli.c:941:5
    #16 0x6cf193a in do_php_cli /home/phpfuzz/WorkSpace/flowfusion/php-src/sapi/cli/php_cli.c:1354:18
    #17 0x6cefd41 in main /home/phpfuzz/WorkSpace/flowfusion/php-src/sapi/cli/php_cli_main.c:18:9
    #18 0x7f5f3a596d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
    #19 0x7f5f3a596e3f in __libc_start_main csu/../csu/libc-start.c:392:3
    #20 0x606524 in _start (/home/phpfuzz/WorkSpace/flowfusion/php-src/sapi/cli/php+0x606524)

SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/phpfuzz/WorkSpace/flowfusion/php-src/main/streams/streams.c:1728:7

To reproduce:

./php-src/sapi/cli/php -d phar.readonly=0 -d phar.require_hash=0 ./test.php

Commit:

68efc09321820256d519365ffe6b5fce1bcd2bbf

Configurations:

CC="clang-12" CXX="clang++-12" CFLAGS="-DZEND_VERIFY_TYPE_INFERENCE" CXXFLAGS="-DZEND_VERIFY_TYPE_INFERENCE" ./configure --enable-debug --enable-address-sanitizer --enable-undefined-sanitizer --enable-re2c-cgoto --enable-fpm --enable-litespeed --enable-phpdbg-debug --enable-zts --enable-bcmath --enable-calendar --enable-dba --enable-dl-test --enable-exif --enable-ftp --enable-gd --enable-gd-jis-conv --enable-mbstring --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvmsg --enable-zend-test --with-zlib --with-bz2 --with-curl --with-enchant --with-gettext --with-gmp --with-mhash --with-ldap --with-libedit --with-readline --with-snmp --with-sodium --with-xsl --with-zip --with-mysqli --with-pdo-mysql --with-pdo-pgsql --with-pgsql --with-sqlite3 --with-pdo-sqlite --with-webp --with-jpeg --with-freetype --enable-sigchild --with-readline --with-pcre-jit --with-iconv

Operating System:

Ubuntu 20.04 Host, Docker 0599jiangyc/flowfusion:latest

This report is automatically generated by FlowFusion

PHP Version

nightly

Operating System

No response

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions