Segmentation fault (access null pointer) in Zend/zend_stack.c
オープン
まだ誰も着手していません。
Bug
Category: Output
Status: Verified
- 主要言語
- C
- スター
- 40.4k
- フォーク
- 8.1k
- 平均マージ
- 2日 13時間
- マージ済み PR(30日)
- 96
説明
Description
The following code:
<?php
class MySessionHandler implements SessionHandlerInterface {
public function open ($save_path, $session_name): bool {
return true;
}
public function close(): bool {}
public function read($id): string {
return '';
}
public function write($id, $sess_data): bool {
ob_start(function () {});
}
public function destroy($id): bool {}
public function gc($maxlifetime): int {}
}
session_set_save_handler(new MySessionHandler());
session_start();
ob_start(function() {
var_dump($b);
});
while (1) {
$a[] = 1;
}
Resulted in this output:
/php-src/Zend/zend_stack.c:40:9: runtime error: applying zero offset to null pointer
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /php-src/Zend/zend_stack.c:40:9
PHP Version
PHP 8.4.0-dev
Operating System
ubuntu 22.04
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず、提供された PHP スクリプトを UBSan 下で再現し、null ポインターの診断が報告される Zend/zend_stack.c の 40 行目を調べます。実行時の動作を、例にある session コールバックおよび output-buffer コールバックと比較します。reproducer が segmentation fault も UBSan レポートも引き起こさなくなれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- c, php
- 領域
- backend
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100