Skip to content
8 changes: 4 additions & 4 deletions Zend/zend_hash.c
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ static zend_always_inline void zend_hash_real_init_mixed_ex(HashTable *ht)
void *data;
uint32_t nSize = ht->nTableSize;

ZEND_ASSERT(HT_SIZE_TO_MASK(nSize));
ZEND_ASSERT(HT_SIZE_TO_MASK(nSize) != 0);

if (UNEXPECTED(GC_FLAGS(ht) & IS_ARRAY_PERSISTENT)) {
data = pemalloc(HT_SIZE_EX(nSize, HT_SIZE_TO_MASK(nSize)), 1);
Expand Down Expand Up @@ -350,7 +350,7 @@ ZEND_API void ZEND_FASTCALL zend_hash_packed_to_hash(HashTable *ht)
uint32_t i;
uint32_t nSize = ht->nTableSize;

ZEND_ASSERT(HT_SIZE_TO_MASK(nSize));
ZEND_ASSERT(HT_SIZE_TO_MASK(nSize) != 0);

HT_ASSERT_RC1(ht);
// Alloc before assign to avoid inconsistencies on OOM
Expand Down Expand Up @@ -398,7 +398,7 @@ ZEND_API void ZEND_FASTCALL zend_hash_extend(HashTable *ht, uint32_t nSize, bool

if (nSize == 0) return;

ZEND_ASSERT(HT_SIZE_TO_MASK(nSize));
ZEND_ASSERT(HT_SIZE_TO_MASK(nSize) != 0);

if (UNEXPECTED(HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED)) {
if (nSize > ht->nTableSize) {
Expand Down Expand Up @@ -1324,7 +1324,7 @@ static void ZEND_FASTCALL zend_hash_do_resize(HashTable *ht)
uint32_t nSize = ht->nTableSize + ht->nTableSize;
Bucket *old_buckets = ht->arData;

ZEND_ASSERT(HT_SIZE_TO_MASK(nSize));
ZEND_ASSERT(HT_SIZE_TO_MASK(nSize) != 0);

new_data = pemalloc(HT_SIZE_EX(nSize, HT_SIZE_TO_MASK(nSize)), GC_FLAGS(ht) & IS_ARRAY_PERSISTENT);
ht->nTableSize = nSize;
Expand Down
1,530 changes: 795 additions & 735 deletions ext/date/lib/timezonedb.h

Large diffs are not rendered by default.

7 changes: 2 additions & 5 deletions ext/pcre/tests/preg_match_frameless_leak.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Memory leak in preg_match() frameless function with invalid regex and object arg
class Str {
private $val;
public function __construct($val) {
$this->val = $val;
$this->val = str_repeat($val, random_int(1, 1));
}
public function __toString() {
return $this->val;
Expand All @@ -15,10 +15,7 @@ class Str {
$regex = new Str("invalid regex");
$subject = new Str("some subject");

// Running in a loop to ensure leak detection if run with memory tools
for ($i = 0; $i < 100; $i++) {
@preg_match($regex, $subject);
}
@preg_match($regex, $subject);

echo "Done";
?>
Expand Down
2 changes: 1 addition & 1 deletion ext/standard/exec.c
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ PHPAPI zend_string *php_escape_shell_cmd(const zend_string *unescaped_cmd)
size_t x, y;
zend_string *cmd;
#ifndef PHP_WIN32
char *p = NULL;
const char *p = NULL;
#endif

ZEND_ASSERT(!zend_str_has_nul_byte(unescaped_cmd) && "Must be a binary safe string");
Expand Down
2 changes: 1 addition & 1 deletion ext/standard/filters.c
Original file line number Diff line number Diff line change
Expand Up @@ -1558,7 +1558,7 @@ static php_stream_filter *strfilter_convert_create(const char *filtername, zval
{
php_convert_filter *inst;

char *dot;
const char *dot;
int conv_mode = 0;

if (filterparams != NULL && Z_TYPE_P(filterparams) != IS_ARRAY) {
Expand Down
18 changes: 9 additions & 9 deletions ext/standard/user_filters.c
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ static php_stream_filter *user_filter_factory_create(const char *filtername,

/* determine the classname/class entry */
if (NULL == (fdat = zend_hash_str_find_ptr(BG(user_filter_map), filtername, len))) {
char *period;
const char *period;

/* Userspace Filters using ambiguous wildcards could cause problems.
i.e.: myfilter.foo.bar will always call into myfilter.foo.*
Expand All @@ -272,16 +272,16 @@ static php_stream_filter *user_filter_factory_create(const char *filtername,

/* Search for wildcard matches instead */
memcpy(wildcard, filtername, len + 1); /* copy \0 */
period = wildcard + (period - filtername);
while (period) {
ZEND_ASSERT(period[0] == '.');
period[1] = '*';
period[2] = '\0';
char *new_period = wildcard + (period - filtername);
while (new_period) {
ZEND_ASSERT(new_period[0] == '.');
new_period[1] = '*';
new_period[2] = '\0';
if (NULL != (fdat = zend_hash_str_find_ptr(BG(user_filter_map), wildcard, strlen(wildcard)))) {
period = NULL;
new_period = NULL;
} else {
*period = '\0';
period = strrchr(wildcard, '.');
*new_period = '\0';
new_period = strrchr(wildcard, '.');
}
}
efree(wildcard);
Expand Down
2 changes: 1 addition & 1 deletion main/fastcgi.c
Original file line number Diff line number Diff line change
Expand Up @@ -641,7 +641,7 @@ static int is_port_number(const char *bindpath)

int fcgi_listen(const char *path, int backlog)
{
char *s;
const char *s;
int tcp = 0;
char host[MAXPATHLEN];
short port = 0;
Expand Down
2 changes: 1 addition & 1 deletion main/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1062,7 +1062,7 @@ PHPAPI ZEND_COLD void php_verror(const char *docref, const char *params, int typ
{
zend_string *replace_origin = NULL;
char *docref_buf = NULL, *target = NULL;
char *docref_target = "", *docref_root = "";
const char *docref_target = "", *docref_root = "";
char *p;
const char *space = "";
const char *class_name = "";
Expand Down
2 changes: 1 addition & 1 deletion main/network.c
Original file line number Diff line number Diff line change
Expand Up @@ -599,7 +599,7 @@ php_socket_t php_network_bind_socket_to_local_addr(const char *host, unsigned po

PHPAPI zend_result php_network_parse_network_address_with_port(const char *addr, size_t addrlen, struct sockaddr *sa, socklen_t *sl)
{
char *colon;
const char *colon;
char *tmp;
zend_result ret = FAILURE;
short port;
Expand Down
16 changes: 8 additions & 8 deletions main/streams/filter.c
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ PHPAPI php_stream_filter *php_stream_filter_create(const char *filtername, zval
const php_stream_filter_factory *factory = NULL;
php_stream_filter *filter = NULL;
size_t n;
char *period;
const char *period;

n = strlen(filtername);

Expand All @@ -234,17 +234,17 @@ PHPAPI php_stream_filter *php_stream_filter_create(const char *filtername, zval

wildname = safe_emalloc(1, n, 3);
memcpy(wildname, filtername, n+1);
period = wildname + (period - filtername);
while (period && !filter) {
ZEND_ASSERT(period[0] == '.');
period[1] = '*';
period[2] = '\0';
char *new_period = wildname + (period - filtername);
while (new_period && !filter) {
ZEND_ASSERT(new_period[0] == '.');
new_period[1] = '*';
new_period[2] = '\0';
if (NULL != (factory = zend_hash_str_find_ptr(filter_hash, wildname, strlen(wildname)))) {
filter = factory->create_filter(filtername, filterparams, persistent);
}

*period = '\0';
period = strrchr(wildname, '.');
*new_period = '\0';
new_period = strrchr(wildname, '.');
}
efree(wildname);
}
Expand Down
5 changes: 3 additions & 2 deletions main/streams/memory.c
Original file line number Diff line number Diff line change
Expand Up @@ -617,7 +617,8 @@ static php_stream * php_stream_url_wrap_rfc2397(php_stream_wrapper *wrapper, con
{
php_stream *stream;
php_stream_temp_data *ts;
char *comma, *semi, *sep;
char *comma;
const char *semi, *sep;
size_t mlen, dlen, plen, vlen, ilen;
zend_off_t newoffs;
zval meta;
Expand All @@ -639,7 +640,7 @@ static php_stream * php_stream_url_wrap_rfc2397(php_stream_wrapper *wrapper, con
path += 2;
}

if ((comma = memchr(path, ',', dlen)) == NULL) {
if ((comma = (char *) memchr(path, ',', dlen)) == NULL) {
php_stream_wrapper_log_error(wrapper, options, "rfc2397: no comma in URL");
return NULL;
}
Expand Down
2 changes: 1 addition & 1 deletion main/streams/plain_wrapper.c
Original file line number Diff line number Diff line change
Expand Up @@ -1778,7 +1778,7 @@ PHPAPI php_stream *_php_stream_fopen_with_path(const char *filename, const char
ptr = pathbuf;

while (ptr && *ptr) {
end = strchr(ptr, DEFAULT_DIR_SEPARATOR);
end = (char *) strchr(ptr, DEFAULT_DIR_SEPARATOR);
if (end != NULL) {
*end = '\0';
end++;
Expand Down
4 changes: 2 additions & 2 deletions main/streams/xp_socket.c
Original file line number Diff line number Diff line change
Expand Up @@ -627,7 +627,7 @@ static inline int parse_unix_address(php_stream_xport_param *xparam, struct sock

static inline char *parse_ip_address_ex(const char *str, size_t str_len, int *portno, int get_err, zend_string **err)
{
char *colon;
const char *colon;
char *host = NULL;

if (memchr(str, '\0', str_len)) {
Expand All @@ -638,7 +638,7 @@ static inline char *parse_ip_address_ex(const char *str, size_t str_len, int *po
#ifdef HAVE_IPV6
if (*(str) == '[' && str_len > 1) {
/* IPV6 notation to specify raw address with port (i.e. [fe80::1]:80) */
char *p = memchr(str + 1, ']', str_len - 2);
const char *p = memchr(str + 1, ']', str_len - 2);
if (!p || *(p + 1) != ':') {
if (get_err) {
*err = strpprintf(0, "Failed to parse IPv6 address \"%s\"", str);
Expand Down
2 changes: 1 addition & 1 deletion sapi/phpdbg/phpdbg_utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ PHPDBG_API int phpdbg_is_addr(const char *str) /* {{{ */

PHPDBG_API int phpdbg_is_class_method(const char *str, size_t len, char **class, char **method) /* {{{ */
{
char *sep = NULL;
const char *sep = NULL;

if (strstr(str, "#") != NULL)
return 0;
Expand Down
Loading