API misuse in fuzz_ppd_gen_conflicts.c: cupsGetConflicts return value ignored

Abierto Apto para principiantes
#45 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
1/5
Tiempo estimado
Menos de una hora
Aptitud para principiantes
75/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
c
Área
testing-qa

Línea de trabajo

Comience en fuzz_ppd_gen_conflicts.c en la línea 38 y compare el uso de la API con el ejemplo de cups/testppd.c. Verifique que el recuento de conflictos y el puntero options se mantengan coherentes cuando se llame a cupsResolveConflicts y, a continuación, ejecute el objetivo de fuzzing para confirmar que la resolución de conflictos se prueba sin la discrepancia indicada.

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

Descripción

Summary

The fuzzer fuzz_ppd_gen_conflicts.c incorrectly uses the cupsGetConflicts API by ignoring its return value, causing mismatched option count and pointer state when calling cupsResolveConflicts.

Problem

Line 38 ignores the return value:

cupsGetConflicts(ppd, "SampleOption", "SampleChoice", &options);  // ❌ Return value ignored

cupsGetConflicts modifies *options and returns the new count, but the fuzzer continues using the old num_options value from line 31.

Consequence

  • Passes mismatched num_options and *options to cupsResolveConflicts
  • Before upstream fix (5b5f5c0d6): NULL pointer dereference crash
  • After fix: Logic errors, cannot properly test conflict resolution

Correct Usage

From cups/testppd.c:

num_options = cupsGetConflicts(ppd, "InputSlot", "Envelope", &options);

Should capture and use the return value.

Reference

As noted by @michaelrsweet in GHSA-r4j5-9gvw-5h7q:

"your PoC code uses the cupsGetConflicts API incorrectly - it returns the number of conflicting options, but you are ignoring the return value."


This prevents proper fuzzing of CUPS conflict resolution logic.

Lenguaje dominante
C
Estrellas
8
Forks
18
Merge medio
7 h 37 min
PR fusionados (30 d)
1

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

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/fuzzing

Todos los issues de OpenPrinting/fuzzing

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.