Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Possible dereference of NULL pointer at `ext/standard/var.c`

Fechada Para iniciantes
#24,121 2 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
74/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
c, php
Domínio
backend

Direção de pesquisa

Comece em ext/standard/var.c por volta das linhas 1010-1016 e inspecione as garantias fornecidas por ZEND_HASH_FOREACH_KEY_VAL_IND para key antes da chamada de zend_string_equals_literal. Confirme se key pode ser NULL nesse ponto e garanta que a mudança concluída impeça a possível desreferência sem alterar o tratamento existente de classes incompletas.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Bug Status: Needs Feedback

Description

At ext/standard/var.c:1010 macros ZEND_HASH_FOREACH_KEY_VAL_IND initiates a cycle, in every iteration of which pointer key is provided.

At ext/standard/var.c:1016 there is a check if(!key), which implies, that key pointer is not guaranteed to not be a NULL. However, right before this check, at ext/standard/var.c:1011 we dereference key pointer by calling zend_string_equals_literal(key, MAGIC_MEMBER) without any additional check.

Possible solution

Adjusting a condition may prevent any unexpected behaviors:

if (key && incomplete_class && zend_string_equals_literal(key, MAGIC_MEMBER)) {
				incomplete_class = false;
				continue;
			}

Found by Linux Verification Center (https://portal.linuxtesting.ru/) using SVACE.
Author D. Meliksetyan.

PHP Version
8.3.31 (found with static analysis)
Operating System

N/A

Linguagem predominante
C
Estrelas
40.4k
Forks
8.2k
Merge médio
2d 1h
PRs com merge (30d)
153

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de php/php-src

Todas as issues de php/php-src

Issues semelhantes

Mais issues de C

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.