Merge branch 'PHP-8.1' into PHP-8.2

* PHP-8.1:
  Fix incorrect error check in browsecap for pcre2_match()
  Add missing error check on tidyLoadConfig
This commit is contained in:
George Peter Banyard 2023-02-21 14:13:35 +00:00
commit 0f394ecbe8
No known key found for this signature in database
GPG key ID: 3306078E3194AEBD
5 changed files with 29 additions and 15 deletions

View file

@ -612,7 +612,7 @@ static int browser_reg_compare(browscap_entry *entry, zend_string *agent_name, b
}
rc = pcre2_match(re, (PCRE2_SPTR)ZSTR_VAL(agent_name), ZSTR_LEN(agent_name), 0, 0, match_data, php_pcre_mctx());
php_pcre_free_match_data(match_data);
if (PCRE2_ERROR_NOMATCH != rc) {
if (rc >= 0) {
/* If we've found a possible browser, we need to do a comparison of the
number of characters changed in the user agent being checked versus
the previous match found and the current match. */

View file

@ -28,13 +28,13 @@ tidy_repair_file($l, $l, $l ,$l); // This doesn't emit any warning, TODO look in
echo "Done\n";
?>
--EXPECTF--
Warning: tidy_repair_string(): Could not load configuration file "1" in %s on line %d
Warning: tidy_repair_string(): Could not load the Tidy configuration file "1" in %s on line %d
Warning: tidy_repair_string(): Could not set encoding "1" in %s on line %d
Warning: tidy_repair_string(): Could not load configuration file "" in %s on line %d
Warning: tidy_repair_string(): Could not load the Tidy configuration file "" in %s on line %d
Warning: tidy_repair_string(): Could not load configuration file "1" in %s on line %d
Warning: tidy_repair_string(): Could not load the Tidy configuration file "1" in %s on line %d
Warning: tidy_repair_string(): Could not set encoding "1" in %s on line %d
Path cannot be empty

View file

@ -0,0 +1,12 @@
--TEST--
GH-10636 (Tidy does not output notice when it encountered parse errors in the default configuration file)
--EXTENSIONS--
tidy
--INI--
tidy.default_config={PWD}/gh10636_config
--FILE--
<?php
$a = new tidy(__DIR__."/007.html");
?>
--EXPECTF--
Notice: main(): There were errors while parsing the Tidy configuration file "%sgh10636_config" in %s on line %d

View file

@ -0,0 +1 @@
indent:@

View file

@ -79,14 +79,7 @@
_php_tidy_apply_config_array(_doc, _val_ht); \
} else if (_val_str) { \
TIDY_OPEN_BASE_DIR_CHECK(ZSTR_VAL(_val_str)); \
switch (tidyLoadConfig(_doc, ZSTR_VAL(_val_str))) { \
case -1: \
php_error_docref(NULL, E_WARNING, "Could not load configuration file \"%s\"", ZSTR_VAL(_val_str)); \
break; \
case 1: \
php_error_docref(NULL, E_NOTICE, "There were errors while parsing the configuration file \"%s\"", ZSTR_VAL(_val_str)); \
break; \
} \
php_tidy_load_config(_doc, ZSTR_VAL(_val_str)); \
}
#define TIDY_OPEN_BASE_DIR_CHECK(filename) \
@ -96,9 +89,7 @@ if (php_check_open_basedir(filename)) { \
#define TIDY_SET_DEFAULT_CONFIG(_doc) \
if (TG(default_config) && TG(default_config)[0]) { \
if (tidyLoadConfig(_doc, TG(default_config)) < 0) { \
php_error_docref(NULL, E_WARNING, "Unable to load Tidy configuration file at \"%s\"", TG(default_config)); \
} \
php_tidy_load_config(_doc, TG(default_config)); \
}
/* }}} */
@ -220,6 +211,16 @@ static void TIDY_CALL php_tidy_panic(ctmbstr msg)
php_error_docref(NULL, E_ERROR, "Could not allocate memory for tidy! (Reason: %s)", (char *)msg);
}
static void php_tidy_load_config(TidyDoc doc, const char *path)
{
int ret = tidyLoadConfig(doc, path);
if (ret < 0) {
php_error_docref(NULL, E_WARNING, "Could not load the Tidy configuration file \"%s\"", path);
} else if (ret > 0) {
php_error_docref(NULL, E_NOTICE, "There were errors while parsing the Tidy configuration file \"%s\"", path);
}
}
static int _php_tidy_set_tidy_opt(TidyDoc doc, char *optname, zval *value)
{
TidyOption opt = tidyGetOptionByName(doc, optname);