apc_cache.c has two format specifier bugs (with patch)
gdt opened this issue · 1 comments
gdt commented
This file
- uses %ld to print time_t
- uses %ld to print zend_long, which can be uint32_t or uint64_t
--- apc_cache.c.orig 2023-11-11 17:35:28.000000000 +0000
+++ apc_cache.c
@@ -212,8 +212,8 @@ static void apc_cache_wlocked_gc(apc_cac
/* good ol' whining */
if (dead->ref_count > 0) {
apc_debug(
- "GC cache entry '%s' was on gc-list for %ld seconds",
- ZSTR_VAL(dead->key), gc_sec
+ "GC cache entry '%s' was on gc-list for %jd seconds",
+ ZSTR_VAL(dead->key), (intmax_t) gc_sec
);
}
@@ -275,7 +275,7 @@ PHP_APCU_API int APC_UNSERIALIZER_NAME(p
BG(serialize_lock)--;
if (!result) {
- php_error_docref(NULL, E_NOTICE, "Error at offset %ld of %ld bytes", (zend_long)(tmp - buf), (zend_long)buf_len);
+ php_error_docref(NULL, E_NOTICE, "Error at offset " ZEND_LONG_FMT " of " ZEND_LONG_FMT " bytes", (zend_long)(tmp - buf), (zend_long)buf_len);
ZVAL_NULL(value);
return 0;
}
gdt commented
Thanks for fixing these issues so quickly!