Segmentation fault (access null pointer) in Zend/zend_stack.c
Offen
Dieses Issue hat noch niemand übernommen.
Bug
Category: Output
Status: Verified
- Vorherrschende Sprache
- C
- Sterne
- 40.4k
- Forks
- 8.2k
- Ø Merge
- 2 T. 13 Std.
- Gemergte PRs (30 T.)
- 96
Beschreibung
Description
The following code:
<?php
class MySessionHandler implements SessionHandlerInterface {
public function open ($save_path, $session_name): bool {
return true;
}
public function close(): bool {}
public function read($id): string {
return '';
}
public function write($id, $sess_data): bool {
ob_start(function () {});
}
public function destroy($id): bool {}
public function gc($maxlifetime): int {}
}
session_set_save_handler(new MySessionHandler());
session_start();
ob_start(function() {
var_dump($b);
});
while (1) {
$a[] = 1;
}
Resulted in this output:
/php-src/Zend/zend_stack.c:40:9: runtime error: applying zero offset to null pointer
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /php-src/Zend/zend_stack.c:40:9
PHP Version
PHP 8.4.0-dev
Operating System
ubuntu 22.04
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, das bereitgestellte PHP-Skript unter UBSan zu reproduzieren, und untersuche Zend/zend_stack.c in Zeile 40, wo die Diagnose zum Nullzeiger gemeldet wird. Vergleiche das Laufzeitverhalten mit den Session- und Output-Buffer-Callbacks im Beispiel; erledigt ist die Aufgabe, wenn der Reproducer keinen Segmentation Fault oder UBSan-Bericht mehr auslöst.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- c, php
- Bereich
- backend
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100