Potential out-of-bounds read in cupsdFindBest() with HTTP_STATE_ERROR
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
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
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de OpenPrinting/cups
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
OpenPrinting/cups#1721 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
OpenPrinting/cups#1727 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
OpenPrinting/cups#1726 ·
Los mantenedores suelen responder en 1 día
-
ippeveprinter: collection-valued job attributes are never exported to the command (IPP_MEDIA_COL always empty)Posiblemente ocupada @michaelrsweet la tomó hace 1 día. Abiertobug documentation priority-low
OpenPrinting/cups#1725 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
I18n for CUPS webapp pagesAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
OpenPrinting/cups#1724 ·
Los mantenedores suelen responder en 1 día
Todos los issues de OpenPrinting/cups
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
darktable-org/darktable#22455 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
area:ci kind:gate-defect
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
InauguralSystems/EigenScript#1448 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
BasedHardware/omi#20084 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
raspberrypi/pico-sdk#3225 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100