Duplicated properties in serialisation payload
Personne n'a encore pris cette issue.
- Langage dominant
- C
- Étoiles
- 40.4k
- Forks
- 8.2k
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 96
Description
Description
Opening this as a reminder for the below.
@TimWolla: https://github.com/php/php-src/pull/22588#discussion_r3523424963
It is legal for properties to appear twice in serialization payload?! This probably should be deprecated and killed.
class TestDefault {
public readonly int $prop = 1;
}
var_dump($s = serialize(new TestDefault));
var_dump(unserialize($s));
// Unserialization still bypasses normal readonly assignment semantics.
var_dump(unserialize("O:11:\"TestDefault\":0:{}"));
var_dump(unserialize("O:11:\"TestDefault\":1:{s:4:\"prop\";i:2;}"));
var_dump(unserialize("O:11:\"TestDefault\":2:{s:4:\"prop\";i:2;s:4:\"prop\";i:3;}"));
string(38) "O:11:"TestDefault":1:{s:4:"prop";i:1;}"
object(TestDefault)#1 (1) {
["prop"]=>
int(1)
}
object(TestDefault)#1 (1) {
["prop"]=>
int(1)
}
object(TestDefault)#1 (1) {
["prop"]=>
int(2)
}
object(TestDefault)#1 (1) {
["prop"]=>
int(3)
}
PHP Version
N/A
Operating System
No response
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire les exemples de serialize() et unserialize() dans l’issue, en comparant les propriétés uniques et dupliquées sur des champs readonly. Suivez les points d’entrée de la sérialisation et de la désérialisation responsables de la restauration des propriétés. Le travail est terminé lorsque le comportement attendu des propriétés dupliquées est défini, notamment s’il faut le marquer comme deprecated ou le supprimer, et que ce comportement est couvert par des tests de régression.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- php
- Domaine
- backend
- Type d'issue
- Bug
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 38/100