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

Potential out-of-bounds read in cupsdFindBest() with HTTP_STATE_ERROR

Abierto Apto para principiantes
#1,729 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

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

Línea de trabajo

Comienza en scheduler/auth.c leyendo cupsdFindBest() y su llamador cupsdAuthorize(), centrándote en cómo httpGetState() proporciona el valor de state. Verifica la ruta HTTP_STATE_ERROR y los límites del array limits. El trabajo estará terminado cuando los estados no válidos no puedan causar un acceso fuera de límites y la búsqueda normal de autorización permanezca sin cambios.

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

Descripción

Potential problem

In scheduler/auth.c, the state parameter is used as an array index in cupsdFindBest():

limit = limits[state];

state is obtained from httpGetState(con->http) and passed to cupsdFindBest() by cupsdAuthorize():

con->best = cupsdFindBest(con->uri, httpGetState(con->http));

httpGetState() can return HTTP_STATE_ERROR, which is defined as -1. However, cupsdFindBest() does not validate state before using it as an array index.

If HTTP_STATE_ERROR reaches cupsdFindBest(), the code accesses limits[-1]. This reads memory before the beginning of the array and results in undefined behavior.

Possible solution

Validate state before accessing limits[state], for example:

if (state < 0 ||
    (size_t)state >= sizeof(limits) / sizeof(limits))
  return NULL;

This ensures that an invalid HTTP state cannot be used as an array index.

Found by Linux Verification Center (portal.linuxtesting.ru) with SVACE.

Author V. Ostretsov

Lenguaje dominante
C
Estrellas
1.8k
Forks
341
Merge medio
15 h 28 min
PR fusionados (30 d)
5

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 OpenPrinting/cups

Todos los issues de OpenPrinting/cups

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.