Skip to content

Commit dd3c254

Browse files
sormesfabpot
authored andcommitted
Throw TransformationFailedException when there is a null bytes injection
1 parent cb3ec06 commit dd3c254

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/Symfony/Component/Form/Extension/Core/DataTransformer/DateTimeToStringTransformer.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@ public function reverseTransform($value)
118118
throw new TransformationFailedException('Expected a string.');
119119
}
120120

121+
if (str_contains($value, "\0")) {
122+
throw new TransformationFailedException('Null bytes not allowed');
123+
}
124+
121125
$outputTz = new \DateTimeZone($this->outputTimezone);
122126
$dateTime = \DateTime::createFromFormat($this->parseFormat, $value, $outputTz);
123127

src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateTimeToStringTransformerTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,19 @@ public function testReverseTransformEmpty()
133133
$this->assertNull($reverseTransformer->reverseTransform(''));
134134
}
135135

136+
public function testReverseTransformWithNullBytes()
137+
{
138+
$transformer = new DateTimeToStringTransformer();
139+
140+
$nullByte = \chr(0);
141+
$value = '2024-03-15 21:11:00'.$nullByte;
142+
143+
$this->expectException(TransformationFailedException::class);
144+
$this->expectExceptionMessage('Null bytes not allowed');
145+
146+
$transformer->reverseTransform($value);
147+
}
148+
136149
public function testReverseTransformWithDifferentTimezones()
137150
{
138151
$reverseTransformer = new DateTimeToStringTransformer('America/New_York', 'Asia/Hong_Kong', 'Y-m-d H:i:s');

0 commit comments

Comments
 (0)