ext/date truncates error messages with null bytes
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- C
- Sterne
- 40.4k
- Forks
- 8.1k
- Ø Merge
- 2 T. 13 Std.
- Gemergte PRs (30 T.)
- 96
Beschreibung
date_throw_uninitialized_error() (C function):
<?php
$o = new class extends DateTime {
public function __construct() {}
};
var_dump(get_class($o));
$o->format("");
OnUpdate_date_timezone ini handler:
<?php
ini_set("date.timezone", "foo\0bar");
php_date_initialize() (C function):
<?php
new DateTimeImmutable("foo\0bar");
php_date_modify() (C function):
<?php
$now = new DateTime();
$now->modify("foo\0bar");
date_interval_initialize() (C function):
<?php
new DateInterval("foo\0bar");
php_date_interval_initialize_from_hash() (C function):
<?php
var_dump(unserialize("O:12:\"DateInterval\":2:{s:11:\"from_string\";b:1;s:11:\"date_string\";s:7:\"foo\0bar\";}"));
date_interval_create_from_date_string() (C function):
<?php
date_interval_create_from_date_string("foo\0bar");
DateInterval::createFromDateString():
<?php
DateInterval::createFromDateString("foo\0bar");
date_period_initialize() (C function):
<?php
DatePeriod::createFromISO8601String("foo\0bar");
date_period_initialize() (C function):
<?php
DatePeriod::createFromISO8601String("foo\0bar");
date_default_timezone_set():
<?php
date_default_timezone_set("foo\0bar");
date_period_unset_property() (C function):
<?php
$o = new class() extends DatePeriod {
public function __construct() {}
};
unset($o->start);
Tested with 3v4l
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
Beginnen Sie in der ext/date-Implementierung bei den genannten C-Funktionen und reproduzieren Sie die aufgeführten Nullbyte-Fälle mit den bereitgestellten PHP-Snippets. Verfolgen Sie, wie jede Fehlermeldung erstellt wird, fügen Sie anschließend Tests für die betroffenen Pfade hinzu und überprüfen Sie, dass die resultierenden Meldungen die relevante Eingabe bewahren; führen Sie die Tests der date-Erweiterung aus, um alle aufgeführten Einstiegspunkte zu bestätigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- c, php
- Bereich
- backend
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 55/100