mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1: Fix undefined behaviour in string uppercasing and lowercasing
This commit is contained in:
commit
bf487bde13
1 changed files with 4 additions and 4 deletions
|
@ -2867,7 +2867,7 @@ ZEND_API zend_string* ZEND_FASTCALL zend_string_tolower_ex(zend_string *str, boo
|
|||
if (BLOCKCONV_FOUND()) {
|
||||
zend_string *res = zend_string_alloc(length, persistent);
|
||||
memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char *) ZSTR_VAL(str));
|
||||
unsigned char *q = p + (ZSTR_VAL(res) - ZSTR_VAL(str));
|
||||
unsigned char *q = (unsigned char*) ZSTR_VAL(res) + (p - (unsigned char*) ZSTR_VAL(str));
|
||||
|
||||
/* Lowercase the chunk we already compared. */
|
||||
BLOCKCONV_INIT_DELTA('a' - 'A');
|
||||
|
@ -2889,7 +2889,7 @@ ZEND_API zend_string* ZEND_FASTCALL zend_string_tolower_ex(zend_string *str, boo
|
|||
zend_string *res = zend_string_alloc(length, persistent);
|
||||
memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char*) ZSTR_VAL(str));
|
||||
|
||||
unsigned char *q = p + (ZSTR_VAL(res) - ZSTR_VAL(str));
|
||||
unsigned char *q = (unsigned char*) ZSTR_VAL(res) + (p - (unsigned char*) ZSTR_VAL(str));
|
||||
while (p < end) {
|
||||
*q++ = zend_tolower_ascii(*p++);
|
||||
}
|
||||
|
@ -2916,7 +2916,7 @@ ZEND_API zend_string* ZEND_FASTCALL zend_string_toupper_ex(zend_string *str, boo
|
|||
if (BLOCKCONV_FOUND()) {
|
||||
zend_string *res = zend_string_alloc(length, persistent);
|
||||
memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char *) ZSTR_VAL(str));
|
||||
unsigned char *q = p + (ZSTR_VAL(res) - ZSTR_VAL(str));
|
||||
unsigned char *q = (unsigned char *) ZSTR_VAL(res) + (p - (unsigned char *) ZSTR_VAL(str));
|
||||
|
||||
/* Uppercase the chunk we already compared. */
|
||||
BLOCKCONV_INIT_DELTA('A' - 'a');
|
||||
|
@ -2938,7 +2938,7 @@ ZEND_API zend_string* ZEND_FASTCALL zend_string_toupper_ex(zend_string *str, boo
|
|||
zend_string *res = zend_string_alloc(length, persistent);
|
||||
memcpy(ZSTR_VAL(res), ZSTR_VAL(str), p - (unsigned char*) ZSTR_VAL(str));
|
||||
|
||||
unsigned char *q = p + (ZSTR_VAL(res) - ZSTR_VAL(str));
|
||||
unsigned char *q = (unsigned char *) ZSTR_VAL(res) + (p - (unsigned char *) ZSTR_VAL(str));
|
||||
while (p < end) {
|
||||
*q++ = zend_toupper_ascii(*p++);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue