Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

NULL pointer dereference in php_ini.c (PHP 8.3)

クローズ 初心者向け
#24,139 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
82/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
c, php
領域
backend

調査の方向性

565行目のexpand_filepath()呼び出しと、610行目付近の後続のstrlen(filename)呼び出しの周辺にあるmain/php_ini.cを読みます。該当するテストスイートを実行する前に、既存のPHP INIテストを確認します。エラーパスでNULLのfilenameをデリファレンスできず、その動作が適切なテストでカバーされていれば完了です。

索引モデルが issue の本文から書いたものです。

説明

Bug Status: Needs Triage
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

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

php/php-src のほかの issue

php/php-src の issue をすべて見る

似ている issue

C の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。