HaxeFoundation / HaxeFoundation/hxcpp

Invalid cast succeeds and leads to crash

Offen
#751 25 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
C++
Sterne
330
Forks
227
Ø Merge
2 T. 16 Std.
Gemergte PRs (30 T.)
18

Beschreibung

Here is a simple class to reproduce the issue:

```
class HxcppBug
{
public static function main()
{
var s : String = "";

var c = try cast(s, Interface) catch (e : Dynamic) null;

if ((c == null) || c.foo) {
trace("Impossible");
}
}
}

private interface Interface
{
var foo(get, null) : Bool;
}
```

This program crashes. c should be evaluated to null, but is instead just assigned from s. Then the call to the get_foo() function crashes since there is no such function on String.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginnen Sie mit dem bereitgestellten Haxe-Reproducer und führen Sie ihn durch das C++-Backend aus, um zu bestätigen, dass der ungültige Cast String statt null zurückgibt und beim Zugriff auf foo abstürzt. Verfolgen Sie die Cast- und Interface-Dispatch-Pfade der Laufzeit in den C++-Runtime-Dateien des Repositorys; als erledigt gilt die Aufgabe, wenn der Reproducer den Cast als null auswertet und nicht mehr abstürzt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cpp
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

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