Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

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

Chiusa Adatta ai principianti
#1,729 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
78/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
c
Ambito
security

Direzione di ricerca

Inizia in scheduler/auth.c leggendo cupsdFindBest() e il suo chiamante cupsdAuthorize(), concentrandoti su come httpGetState() fornisce il valore di state. Verifica il percorso HTTP_STATE_ERROR e i limiti dell'array limits. Il lavoro è completato quando gli stati non validi non possono causare un accesso oltre i limiti e la normale ricerca dell'autorizzazione rimane invariata.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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

Lingua principale
C
Stelle
1.8k
Fork
352
Merge medio
2g 5h
PR unite (30g)
14

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di OpenPrinting/cups

Tutte le issue di OpenPrinting/cups

Issue simili

Altre issue su C

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.