Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Windows CLI: get_ps_title() passes bytes to GetConsoleTitleW() instead of characters, overflowing the 260-wchar_t buffer

Abierto Apto para principiantes
#25,009 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@lazerg ya está trabajando en esto.

Desde el 28/10/2026.

  • #25011 de @lazerg — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
79/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
c

Línea de trabajo

Lee la llamada a GetConsoleTitleW() en sapi/cli/ps_title.c, alrededor de las líneas 407–436, y comprueba cómo se pasa la longitud del búfer. Empieza revisando cli_get_process_title_basic.phpt y cli_process_title_windows.phpt, que actualmente cubren títulos cortos. El trabajo estará terminado cuando la API reciba la capacidad del búfer en caracteres y un título largo de la consola se trunque sin provocar un fallo en Windows.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Description

In sapi/cli/ps_title.c (~L407-436), wchar_t ps_buffer_w[MAX_PATH] is filled by GetConsoleTitleW(ps_buffer_w, (DWORD)sizeof(ps_buffer_w)). nSize is a count of characters, so 520 is passed for a buffer of 260 wchar_t; the API may write up to 1040 bytes. The clamp after the call acts on a different buffer. PHP itself rejects titles of 260+ characters in set_ps_title(), so the console title has to be set by another process on the same console.

The following code (run from a console):

import ctypes, subprocess
ctypes.windll.kernel32.SetConsoleTitleW("A" * 500)
r = subprocess.run([r"C:\php\php.exe", "-r", "echo strlen(cli_get_process_title());"])
print(hex(r.returncode & 0xFFFFFFFF))

Resulted in this output:

0xC0000409   (STATUS_STACK_BUFFER_OVERRUN)

Title length 10 and 259 work; 260 prints 259; 500 aborts.

But I expected this output instead: 259 (truncated title), no crash.

Fix: GetConsoleTitleW(ps_buffer_w, (DWORD)_countof(ps_buffer_w)). Existing tests (cli_get_process_title_basic.phpt, cli_process_title_windows.phpt) only use short titles.

PHP Version
PHP 8.7.0-dev (cli) (built: Oct 27 2026 17:51:17) (ZTS Visual C++ 2026 x64)
Zend Engine v4.7.0-dev (master @ 0af8a091eec28513a6a0b758bcb10b430ba6c6de)

Affects PHP-8.4/8.5 by source inspection (not run there).

Operating System

Windows 11 x64

Lenguaje dominante
C
Estrellas
41.7k
Forks
8.5k
Merge medio
2 d 10 h
PR fusionados (30 d)
158

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de php/php-src

Todos los issues de php/php-src

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.