Skip to content

Registering ZIP progress callback twice doesn't work #18431

Closed

Description

@YuanchengJiang

Description

The following code:

<?php
$file = $dirname . '__tmp_oo_progress_trampoline.zip';
class TrampolineTest {
public function __call(string $name, array $arguments): void {
}
}
$o = new TrampolineTest();
$callback = [$o, 'trampoline'];
$zip = new ZipArchive;
if (!$zip->open($file, ZIPARCHIVE::CREATE)) {
}
var_dump($zip->registerProgressCallback(0.5, $callback));
var_dump($zip->addFromString('foo', 'entry #1'));
try {
var_dump($zip->registerProgressCallback(0.5, $callback));
} catch (Throwable $e) {
}

Resulted in this output:

/home/phpfuzz/WorkSpace/flowfusion/php-src/Zend/zend_API.h:852:6: runtime error: member access within null pointer of type 'zend_function' (aka 'union _zend_function')
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/phpfuzz/WorkSpace/flowfusion/php-src/Zend/zend_API.h:852:6 in 

To reproduce:

./php-src/sapi/cli/php  ./test.php

Commit:

4f3244351dad83333b27114c3f5be16d72e2e663

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

4f32443

Operating System

No response

Activity

  1. self-assigned this
    on Apr 26, 2025
  2. changed the title [-]SEGV Zend/zend_API.h[/-] [+]Registering ZIP progress callback twice doesn't work[/+] on Apr 26, 2025
  3. added a commit that references this issue on Apr 26, 2025
    b76f7e3
  4. added a commit that references this issue on Apr 26, 2025
    b066ac0
  5. added 2 commits that reference this issue on Apr 26, 2025
    5b8db66
    a7cc447
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions