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

Bug in String::copy, out of bounds crash

Aperta
#9,110 7 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
48/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Ferma
Stack tecnologico
cpp
Ambito
embedded-iot

Direzione di ricerca

Iniziare da cores/esp8266/WString.cpp intorno alle righe 280-291 ed esaminare String::copy insieme a setLen e reserve. Riprodurre il crash con lunghezze delle stringhe che attivano il limite di allocazione, quindi verificare che il carattere null di terminazione si trovi sempre all’interno dell’array allocato e che non si verifichi alcun accesso oltre i limiti.

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

Descrizione

Basic Infos
  • This issue complies with the issue POLICY doc.
  • I have read the documentation at readthedocs and the issue is not addressed there.
  • I have tested that the issue is present in current master branch (aka latest git).
  • I have searched the issue tracker for a similar issue.
  • If there is a stack dump, I have decoded it.
  • I have filled out all fields below.
Problem Description

See line 291 (and line 280):

https://github.com/esp8266/Arduino/blob/eda4e0855fa5ebcf1d7f621f35f25f6bab503335/cores/esp8266/WString.cpp#L284-L293

When allocating an array of N elements, accessing element [N] is out of bounds.

This only happens sometimes at very specific string lengths, as setLen only allocates in multiples of N bytes.

N.B. similar issue for ESP32, so I will also add an issue there.

Suggested fix:

reserve(length + 1);

N.B. This function is likely to be called with strlen() or strlen_P() as argument, which does not include the ending null character.

Lingua principale
C++
Stelle
16.7k
Fork
13.1k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

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 esp8266/Arduino

Tutte le issue di esp8266/Arduino

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.