NULL pointer dereference in php_ini.c (PHP 8.3)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
565行目のexpand_filepath()呼び出しと、610行目付近の後続のstrlen(filename)呼び出しの周辺にあるmain/php_ini.cを読みます。該当するテストスイートを実行する前に、既存のPHP INIテストを確認します。エラーパスでNULLのfilenameをデリファレンスできず、その動作が適切なテストでカバーされていれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Description
At main/php_ini.c:565 the return value of expand_filepath() is assigned to pointer filename without checking whether the function returned NULL:
https://github.com/php/php-src/blob/PHP-8.3/main/php_ini.c#L563-L566
The expand_filepath() function may return NULL if path expansion fails. However, later pointer filename is dereferenced by calling strlen(filename) without an additional NULL check:
https://github.com/php/php-src/blob/PHP-8.3/main/php_ini.c#L599-L609
In the analyzed PHP 8.3 source this operation corresponds to php_ini.c:610.
This may lead to a NULL pointer dereference if expand_filepath() fails.
Possible solution
Checking the return value of expand_filepath() before using filename may prevent unexpected behavior:
filename = expand_filepath(php_ini_file_name, NULL);
if (filename) {
free_filename = true;
} else {
filename = php_ini_file_name;
}
Found by Linux Verification Center (https://portal.linuxtesting.ru/) using SVACE.
Author E. Tretiakov.
PHP Version
8.3.24 (found with static analysis)
Operating System
N/A
- 主要言語
- C
- スター
- 40.4k
- フォーク
- 8.2k
- 平均マージ
- 2日 1時間
- マージ済み PR(30日)
- 153
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
php/php-src のほかの issue
-
Feature Status: Needs Triage
難易度 2/5 1〜3時間 初心者へのやさしさ 73/100
メンテナーはふだん 1 日以内に返信
-
Sockets from synchronous stream_socket_client() are left in non-blocking mode on Windows対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンBug Status: Needs Triage
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
メンテナーはふだん 1 日以内に返信
-
Variant analysis: 1 unfixed sibling safety gap in php-src対応中かも @kamil-tekiela が 9 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
sapi_lsapi_ub_write does not return bytes written in lsapi mode対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンBug Status: Needs Triage
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
メンテナーはふだん 1 日以内に返信
-
Bug Status: Needs Triage
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
libsdl-org/SDL#16464 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
backend
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
BasedHardware/omi#20940 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1時間未満 初心者へのやさしさ 70/100
メンテナーはふだん 1 日以内に返信