SNMP accepts malformed remote ports

Aberta Para iniciantes
#25,137 1 comentário 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

@somethingwithproof já está trabalhando nisso.

Desde 1/11/2026.

  • #25138 de @somethingwithproof — aberto

Avaliação

Dificuldade
2/5
Tempo estimado
Meio dia
Facilidade para iniciantes
62/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
c
Domínio
networking

Direção de pesquisa

A issue aponta para a análise de host e porta feita pelo construtor de SNMP, que segundo o relato usa atoi(). O payload não informa o arquivo, então comece localizando essa análise no código-fonte da extensão SNMP. Reproduza com as duas chamadas ao construtor do relato e depois verifique se portas malformadas lançam ValueError enquanto 0 e 65535 continuam funcionando. Está concluído quando os dois casos malformados lançam exceção e um teste phpt no diretório de testes da extensão SNMP os cobre.

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

Descrição

Description

The following code:

<?php

new SNMP(SNMP::VERSION_1, '127.0.0.1:not-a-port', 'public');
new SNMP(SNMP::VERSION_1, '127.0.0.1:123junk', 'public');

does not throw an exception. The first port is interpreted as 0, and the
second is interpreted as 123.

I expected both malformed ports to result in a ValueError. The parser should
require at least one decimal digit, reject trailing characters, and enforce the
existing 0..65535 range.

PHP Version
PHP 8.4.28-dev (cli) (built: Nov  1 2026 11:27:04) (ZTS DEBUG)
Copyright (c) The PHP Group
Zend Engine v4.4.28-dev, Copyright (c) Zend Technologies

The same permissive atoi() parsing is present on the current master branch.

Operating System

macOS 27.2 arm64

Linguagem predominante
C
Estrelas
41.7k
Forks
8.5k
Merge médio
2d 18h
PRs com merge (30d)
145

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.