Skip to content

Commit 6e72d46

Browse files
committed
PHP 8.1: plugin/theme editor pages: prevent "passing null to non-nullable" notice
While it is probably unlikely that someone would have a direct link to the plugin/theme editor on their home page or even on someone else's homepage, it is entirely possible for the referrer URL to not have a "path" component. In PHP 8.1, this would lead to a `basename(): Passing null to parameter #1 ($string) of type string is deprecated` deprecation notice. Changing the logic around and adding validation for the return type value of `parse_url()` prevents that.
1 parent 0504d63 commit 6e72d46

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

src/wp-admin/plugin-editor.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -312,10 +312,12 @@
312312

313313
$excluded_referer_basenames = array( 'plugin-editor.php', 'wp-login.php' );
314314

315-
if ( $referer && ! in_array( basename( parse_url( $referer, PHP_URL_PATH ) ), $excluded_referer_basenames, true ) ) {
316-
$return_url = $referer;
317-
} else {
318-
$return_url = admin_url( '/' );
315+
$return_url = admin_url( '/' );
316+
if ( $referer ) {
317+
$referer_path = parse_url( $referer, PHP_URL_PATH );
318+
if ( isset( $referer_path ) && ! in_array( basename( $referer_path ), $excluded_referer_basenames, true ) ) {
319+
$return_url = $referer;
320+
}
319321
}
320322
?>
321323
<div id="file-editor-warning" class="notification-dialog-wrap file-editor-warning hide-if-no-js hidden">

src/wp-admin/theme-editor.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -343,10 +343,12 @@
343343

344344
$excluded_referer_basenames = array( 'theme-editor.php', 'wp-login.php' );
345345

346-
if ( $referer && ! in_array( basename( parse_url( $referer, PHP_URL_PATH ) ), $excluded_referer_basenames, true ) ) {
347-
$return_url = $referer;
348-
} else {
349-
$return_url = admin_url( '/' );
346+
$return_url = admin_url( '/' );
347+
if ( $referer ) {
348+
$referer_path = parse_url( $referer, PHP_URL_PATH );
349+
if ( isset( $referer_path ) && ! in_array( basename( $referer_path ), $excluded_referer_basenames, true ) ) {
350+
$return_url = $referer;
351+
}
350352
}
351353
?>
352354
<div id="file-editor-warning" class="notification-dialog-wrap file-editor-warning hide-if-no-js hidden">

0 commit comments

Comments
 (0)