php / php/php-src

PHP 8.2 build warnings: -Warray-bounds, -Wmaybe-uninitialized

Ouverte
#23,633 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Category: Build System Status: Needs Triage
Langage dominant
C
Étoiles
40.4k
Forks
8.2k
Merge moyen
2 j 13 h
PR mergées (30 j)
96

Description

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

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Reproduisez le rapport avec buildconf, ./configure --with-pear --enable-xml et make -j16 en utilisant GCC 12.2.0. Inspectez Zend/zend_API.c autour de zend_register_functions et ext/opcache/jit/zend_jit_trace.c autour de zend_jit_trace, puis vérifiez que la compilation du code source de PHP 8.2 se termine sans ces avertissements.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
c
Domaine
build-system
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Active
Clarté
Plutôt claire
Accessibilité débutants
62/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.