PHP 8.2 build warnings: -Warray-bounds, -Wmaybe-uninitialized
オープン
まだ誰も着手していません。
Category: Build System
Status: Needs Triage
- 主要言語
- C
- スター
- 40.4k
- フォーク
- 8.1k
- 平均マージ
- 2日 13時間
- マージ済み PR(30日)
- 96
説明
buildconf, ./configure --with-pear --enable-xml, followed by make -j16 included the following warnings:
zend_API.c -Warray-bounds
/usr/src/php/Zend/zend_API.c: In function 'zend_register_functions':
/usr/src/php/Zend/zend_API.c:2843:49: warning: array subscript 'zend_function {aka union _zend_function}[0]' is partly outside array bounds of 'unsigned char[136]' [-Warray-bounds]
2843 | uint32_t num_args = reg_function->common.num_args;
| ^~
/usr/src/php/Zend/zend_API.c:2833:32: note: object of size 136 allocated by 'malloc'
2833 | reg_function = malloc(sizeof(zend_internal_function));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/php/Zend/zend_API.c:2844:33: warning: array subscript 'zend_function {aka union _zend_function}[0]' is partly outside array bounds of 'unsigned char[136]' [-Warray-bounds]
2844 | if (reg_function->common.fn_flags & ZEND_ACC_VARIADIC) {
| ^~
/usr/src/php/Zend/zend_API.c:2833:32: note: object of size 136 allocated by 'malloc'
2833 | reg_function = malloc(sizeof(zend_internal_function));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/php/Zend/zend_API.c:2849:33: warning: array subscript 'zend_function {aka union _zend_function}[0]' is partly outside array bounds of 'unsigned char[136]' [-Warray-bounds]
2849 | if (reg_function->common.arg_info && num_args) {
| ^~
/usr/src/php/Zend/zend_API.c:2833:32: note: object of size 136 allocated by 'malloc'
2833 | reg_function = malloc(sizeof(zend_internal_function));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/php/Zend/zend_API.c:2855:49: warning: array subscript 'zend_function {aka union _zend_function}[0]' is partly outside array bounds of 'unsigned char[136]' [-Warray-bounds]
2855 | reg_function->common.fn_flags |= ZEND_ACC_HAS_TYPE_HINTS;
| ^~
/usr/src/php/Zend/zend_API.c:2833:32: note: object of size 136 allocated by 'malloc'
2833 | reg_function = malloc(sizeof(zend_internal_function));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/php/Zend/zend_API.c:2855:49: warning: array subscript 'zend_function {aka union _zend_function}[0]' is partly outside array bounds of 'unsigned char[136]' [-Warray-bounds]
2855 | reg_function->common.fn_flags |= ZEND_ACC_HAS_TYPE_HINTS;
| ^~
/usr/src/php/Zend/zend_API.c:2833:32: note: object of size 136 allocated by 'malloc'
2833 | reg_function = malloc(sizeof(zend_internal_function));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/php/Zend/zend_API.c:2871:34: warning: array subscript 'zend_function {aka union _zend_function}[0]' is partly outside array bounds of 'unsigned char[136]' [-Warray-bounds]
2871 | (reg_function->common.fn_flags & (ZEND_ACC_HAS_RETURN_TYPE|ZEND_ACC_HAS_TYPE_HINTS))) {
| ^~
/usr/src/php/Zend/zend_API.c:2833:32: note: object of size 136 allocated by 'malloc'
2833 | reg_function = malloc(sizeof(zend_internal_function));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/php/Zend/zend_API.c:2881:37: warning: array subscript 'zend_function {aka union _zend_function}[0]' is partly outside array bounds of 'unsigned char[136]' [-Warray-bounds]
2881 | reg_function->common.arg_info = new_arg_info + 1;
| ^~
/usr/src/php/Zend/zend_API.c:2833:32: note: object of size 136 allocated by 'malloc'
2833 | reg_function = malloc(sizeof(zend_internal_function));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ext/opcache/jit/zend_jit_trace.c -Wmaybe-uninitialized
In file included from /usr/src/php/ext/opcache/jit/zend_jit.c:4445:
ext/opcache/jit/zend_jit_trace.c: In function 'zend_jit_trace':
ext/opcache/jit/zend_jit_trace.c:6533:86: warning: 'gen_handler' may be used uninitialized [-Wmaybe-uninitialized]
6533 | (gen_handler || !ra || !ra[ssa_op->op1_def]));
| ^~
ext/opcache/jit/zend_jit_trace.c:4300:30: note: 'gen_handler' was declared here
4300 | bool gen_handler;
| ^~~~~~~~~~~
while 8.2 is security only, it should still support building from source
Built using gcc (Debian 12.2.0-14+deb12u1) 12.2.0 against latest 8.2 commit, 4fa25b04e76ccafda9a778f2ba2aaeb66fad1037
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
buildconf、./configure --with-pear --enable-xml、および GCC 12.2.0 を使用した make -j16 で報告を再現してください。Zend/zend_API.c の zend_register_functions 付近と、ext/opcache/jit/zend_jit_trace.c の zend_jit_trace 付近を調査し、その後、PHP 8.2 のソースビルドがこれらの警告なしに完了することを確認してください。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- c
- 領域
- build-system
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 活発
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 62/100