[php-src] Issue #22993: ext/date truncates error messages with null bytes

[email protected] (DanielEScherzer) Sun, 2 Aug 2026 00:47:27 +0000
Newsgroups php.bugs
Message-ID <hRzqE9dRIKtRnFzPrMjvuXjzrP0gpJgtd0HEBkngdR8@main.internal.php.net>
Issue: https://github.com/php/php-src/issues/22993
Author: DanielEScherzer

`date_throw_uninitialized_error()` (C function):

```php
<?php

$o = new class extends DateTime {
    public function __construct() {}
};
var_dump(get_class($o));
$o->format("");
```

`OnUpdate_date_timezone` ini handler:

```php
<?php

ini_set("date.timezone", "foo\0bar");
```

`php_date_initialize()` (C function):

```php
<?php

new DateTimeImmutable("foo\0bar");
```

`php_date_modify()` (C function):

```php
<?php

$now = new DateTime();
$now->modify("foo\0bar");
```

`date_interval_initialize()` (C function):

```php
<?php

new DateInterval("foo\0bar");
```

`php_date_interval_initialize_from_hash()` (C function):

```php
<?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
<?php

date_interval_create_from_date_string("foo\0bar");
```

`DateInterval::createFromDateString()`:

```php
<?php

DateInterval::createFromDateString("foo\0bar");
```

`date_period_initialize()` (C function):

```php
<?php

DatePeriod::createFromISO8601String("foo\0bar");
```

`date_period_initialize()` (C function):

```php
<?php

DatePeriod::createFromISO8601String("foo\0bar");
```

`date_default_timezone_set()`:

```php
<?php

date_default_timezone_set("foo\0bar");
```

`date_period_unset_property()` (C function):

```php
<?php

$o = new class() extends DatePeriod {
    public function __construct() {}
};
unset($o->start);
```

Tested with 3v4l