ext/date truncates error messages with null bytes
Nessuno ha ancora preso questa issue.
- Lingua principale
- C
- Stelle
- 40.4k
- Fork
- 8.2k
- Merge medio
- 2g 13h
- PR unite (30g)
- 96
Descrizione
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
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Iniziare nell’implementazione di ext/date, nelle funzioni C indicate, e riprodurre i casi di byte nullo elencati con gli snippet PHP forniti. Tracciare il modo in cui viene costruito ogni messaggio di errore, quindi aggiungere la copertura per i percorsi interessati e verificare che i messaggi risultanti preservino l’input pertinente; eseguire i test dell’estensione date per confermare tutti i punti di ingresso elencati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- c, php
- Ambito
- backend
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 55/100