react / react/react-native

AppRegistry mishandles keys inherited from Object.prototype

Offen
#58,196 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Needs: Author Feedback Needs: Repro
Vorherrschende Sprache
C++
Sterne
127k
Forks
25.3k
Ø Merge
1 T. 23 Std.
Gemergte PRs (30 T.)
4

Beschreibung

Description

The public AppRegistry stores app and section keys in plain object literals. Looking up an unregistered key such as constructor returns an inherited Object member. Registering the valid string key __proto__ mutates the registry prototype rather than creating an own entry, so the app/section key lists omit it.

The defect is present in React Native 0.87.1 and current main.

Steps to reproduce

Call AppRegistry.getRunnable("constructor"), then register an app or section named __proto__ and inspect getAppKeys() / getSectionKeys().

Expected behavior

Only explicitly registered keys should resolve, and all string app/section keys should be stored as ordinary own entries.

React Native Version

0.87.1 and current main.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne bei den im Bericht genannten öffentlichen AppRegistry-Einstiegspunkten: getRunnable(), registerApp oder der Abschnittsregistrierung sowie getAppKeys()/getSectionKeys(). Reproduziere die Fälle zur Konstruktorauflösung und zur proto-Registrierung und untersuche anschließend, wie Schlüssel gespeichert und aufgelöst werden. Erledigt ist die Aufgabe, wenn nicht registrierte geerbte Namen nicht aufgelöst werden und jeder registrierte String-Schlüssel in der entsprechenden Schlüsselliste erscheint.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
react-native
Bereich
mobile
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Aktiv
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
68/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.