Skip to content

Commit 070e3d0

Browse files
committed
uri: Make the .free_uri handlers safe to call with NULL
The `php_uri_free()` function already unconditionally called `->free_uri()` and thus couldn't be safely used when the `->uri` was `NULL` for some reason. The lexbor implementation was already safe, because `lxb_url_destroy()` is guaranteed to be a noop for `NULL`.
1 parent 96c4d8b commit 070e3d0

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

ext/uri/uri_parser_php_parse_url.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ static void uri_parser_php_parse_url_free(void *uri)
158158
{
159159
php_url *parse_url_uri = uri;
160160

161+
if (UNEXPECTED(parse_url_uri == NULL)) {
162+
return;
163+
}
164+
161165
php_url_free(parse_url_uri);
162166
}
163167

ext/uri/uri_parser_rfc3986.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -401,10 +401,14 @@ ZEND_ATTRIBUTE_NONNULL static zend_string *php_uri_parser_rfc3986_to_string(void
401401
return uri_string;
402402
}
403403

404-
ZEND_ATTRIBUTE_NONNULL static void php_uri_parser_rfc3986_free(void *uri)
404+
static void php_uri_parser_rfc3986_free(void *uri)
405405
{
406406
php_uri_parser_rfc3986_uris *uriparser_uris = uri;
407407

408+
if (UNEXPECTED(uriparser_uris == NULL)) {
409+
return;
410+
}
411+
408412
uriFreeUriMembersMmA(&uriparser_uris->uri, mm);
409413
uriFreeUriMembersMmA(&uriparser_uris->normalized_uri, mm);
410414

0 commit comments

Comments
 (0)