@@ -980,7 +980,7 @@ static void zend_mm_random(unsigned char *buf, size_t size) /* {{{ */
980
980
int has_context = 0 ;
981
981
982
982
if (!CryptAcquireContext (& hCryptProv , NULL , NULL , PROV_RSA_FULL , 0 )) {
983
- /* Could mean that the key container does not exist, let try
983
+ /* Could mean that the key container does not exist, let try
984
984
again by asking for a new one */
985
985
if (GetLastError () == NTE_BAD_KEYSET ) {
986
986
if (CryptAcquireContext (& hCryptProv , NULL , NULL , PROV_RSA_FULL , CRYPT_NEWKEYSET )) {
@@ -1344,7 +1344,7 @@ static int zend_mm_check_ptr(zend_mm_heap *heap, void *ptr, int silent ZEND_FILE
1344
1344
}
1345
1345
if (!silent ) {
1346
1346
TSRMLS_FETCH ();
1347
-
1347
+
1348
1348
zend_message_dispatcher (ZMSG_LOG_SCRIPT_NAME , NULL TSRMLS_CC );
1349
1349
zend_debug_alloc_output ("---------------------------------------\n" );
1350
1350
zend_debug_alloc_output ("%s(%d) : Block " PTR_FMT " status:\n" ZEND_FILE_LINE_RELAY_CC , ptr );
@@ -2171,7 +2171,7 @@ static void *_zend_mm_realloc_int(zend_mm_heap *heap, void *p, size_t size ZEND_
2171
2171
#if ZEND_MM_CACHE
2172
2172
if (ZEND_MM_SMALL_SIZE (true_size )) {
2173
2173
size_t index = ZEND_MM_BUCKET_INDEX (true_size );
2174
-
2174
+
2175
2175
if (heap -> cache [index ] != NULL ) {
2176
2176
zend_mm_free_block * best_fit ;
2177
2177
zend_mm_free_block * * cache ;
@@ -2184,7 +2184,7 @@ static void *_zend_mm_realloc_int(zend_mm_heap *heap, void *p, size_t size ZEND_
2184
2184
heap -> cache [index ] = best_fit -> prev_free_block ;
2185
2185
ZEND_MM_CHECK_MAGIC (best_fit , MEM_BLOCK_CACHED );
2186
2186
ZEND_MM_SET_DEBUG_INFO (best_fit , size , 1 , 0 );
2187
-
2187
+
2188
2188
ptr = ZEND_MM_DATA_OF (best_fit );
2189
2189
2190
2190
#if ZEND_DEBUG || ZEND_MM_HEAP_PROTECTION
@@ -2466,7 +2466,7 @@ static inline size_t safe_address(size_t nmemb, size_t size, size_t offset)
2466
2466
: "%0" (res ),
2467
2467
"rm" (size ),
2468
2468
"rm" (offset ));
2469
-
2469
+
2470
2470
if (UNEXPECTED (overflow )) {
2471
2471
zend_error_noreturn (E_ERROR , "Possible integer overflow in memory allocation (%zu * %zu + %zu)" , nmemb , size , offset );
2472
2472
return 0 ;
@@ -2575,21 +2575,21 @@ ZEND_API void *_ecalloc(size_t nmemb, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LI
2575
2575
2576
2576
ZEND_API char * _estrdup (const char * s ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC )
2577
2577
{
2578
- int length ;
2578
+ size_t length ;
2579
2579
char * p ;
2580
2580
#ifdef ZEND_SIGNALS
2581
2581
TSRMLS_FETCH ();
2582
2582
#endif
2583
2583
2584
2584
HANDLE_BLOCK_INTERRUPTIONS ();
2585
2585
2586
- length = strlen (s )+ 1 ;
2587
- p = (char * ) _emalloc (length ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC );
2586
+ length = strlen (s );
2587
+ p = (char * ) _emalloc (safe_address ( length , 1 , 1 ) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC );
2588
2588
if (UNEXPECTED (p == NULL )) {
2589
2589
HANDLE_UNBLOCK_INTERRUPTIONS ();
2590
2590
return p ;
2591
2591
}
2592
- memcpy (p , s , length );
2592
+ memcpy (p , s , length + 1 );
2593
2593
HANDLE_UNBLOCK_INTERRUPTIONS ();
2594
2594
return p ;
2595
2595
}
@@ -2603,7 +2603,7 @@ ZEND_API char *_estrndup(const char *s, uint length ZEND_FILE_LINE_DC ZEND_FILE_
2603
2603
2604
2604
HANDLE_BLOCK_INTERRUPTIONS ();
2605
2605
2606
- p = (char * ) _emalloc (length + 1 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC );
2606
+ p = (char * ) _emalloc (safe_address ( length , 1 , 1 ) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC );
2607
2607
if (UNEXPECTED (p == NULL )) {
2608
2608
HANDLE_UNBLOCK_INTERRUPTIONS ();
2609
2609
return p ;
@@ -2624,7 +2624,7 @@ ZEND_API char *zend_strndup(const char *s, uint length)
2624
2624
2625
2625
HANDLE_BLOCK_INTERRUPTIONS ();
2626
2626
2627
- p = (char * ) malloc (length + 1 );
2627
+ p = (char * ) malloc (safe_address ( length , 1 , 1 ) );
2628
2628
if (UNEXPECTED (p == NULL )) {
2629
2629
HANDLE_UNBLOCK_INTERRUPTIONS ();
2630
2630
return p ;
0 commit comments