diff options
author | dormando <dormando@rydia.net> | 2022-08-12 14:51:53 -0700 |
---|---|---|
committer | dormando <dormando@rydia.net> | 2022-08-12 14:51:53 -0700 |
commit | d296cc03271197e214038d51b4a60716f2a70e8f (patch) | |
tree | 2eba72fb731eeae8b128ffd20fdf07a6d82d7ab9 /logger.c | |
parent | 0e0b0c2d373c738b402f6725b36b5b22e935ca0c (diff) | |
download | memcached-d296cc03271197e214038d51b4a60716f2a70e8f.tar.gz |
log: fix obscure crashes due to size_t promotion
It dawns on me now that I should've been hinting or forcing the type at
all of the LOGGER_LOG endpoints to ensure they match the va_arg side on
logger.c. This patch initially swaps size_t's for int's so at least it's
using less complicated promotion rules.
Fixes a crash on centos 7 when logging sets via `watch mutations`
Diffstat (limited to 'logger.c')
-rw-r--r-- | logger.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -96,7 +96,7 @@ static void _logger_log_ext_write(logentry *e, const entry_details *d, const voi static void _logger_log_item_get(logentry *e, const entry_details *d, const void *entry, va_list ap) { int was_found = va_arg(ap, int); char *key = va_arg(ap, char *); - size_t nkey = va_arg(ap, size_t); + int nkey = va_arg(ap, int); int nbytes = va_arg(ap, int); uint8_t clsid = va_arg(ap, int); int sfd = va_arg(ap, int); @@ -115,7 +115,7 @@ static void _logger_log_item_store(logentry *e, const entry_details *d, const vo enum store_item_type status = va_arg(ap, enum store_item_type); int comm = va_arg(ap, int); char *key = va_arg(ap, char *); - size_t nkey = va_arg(ap, size_t); + int nkey = va_arg(ap, int); int nbytes = va_arg(ap, int); rel_time_t ttl = va_arg(ap, rel_time_t); uint8_t clsid = va_arg(ap, int); @@ -316,7 +316,7 @@ static void _logger_log_proxy_req(logentry *e, const entry_details *d, const voi unsigned short code = va_arg(ap, int); int status = va_arg(ap, int); char *detail = va_arg(ap, char *); - size_t dlen = va_arg(ap, size_t); + int dlen = va_arg(ap, int); char *be_name = va_arg(ap, char *); char *be_port = va_arg(ap, char *); |