summaryrefslogtreecommitdiff
path: root/logger.c
diff options
context:
space:
mode:
authordormando <dormando@rydia.net>2022-11-24 18:27:15 -0800
committerdormando <dormando@rydia.net>2022-11-24 18:27:15 -0800
commitb10511e5bf694e9ec0bc60e82edf8f67d74891f2 (patch)
treeba2690b1f90f233227f9f11510dbd66137984d63 /logger.c
parentfbb9e0a0c894e96a8b5e4f6f421c299c324a6178 (diff)
downloadmemcached-b10511e5bf694e9ec0bc60e82edf8f67d74891f2.tar.gz
proxy: fix mcp.log_req crash on nil res
If for some reason a res object is not passed into mcp.log_req or mcp.log_reqsample it would still strlen() the backend name/port's, which could crash.
Diffstat (limited to 'logger.c')
-rw-r--r--logger.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/logger.c b/logger.c
index a7f57b3..79f4ed1 100644
--- a/logger.c
+++ b/logger.c
@@ -326,8 +326,13 @@ static void _logger_log_proxy_req(logentry *e, const entry_details *d, const voi
le->status = status;
le->dlen = dlen;
le->elapsed = elapsed;
- le->be_namelen = strlen(be_name);
- le->be_portlen = strlen(be_port);
+ if (be_name && be_port) {
+ le->be_namelen = strlen(be_name);
+ le->be_portlen = strlen(be_port);
+ } else {
+ le->be_namelen = 0;
+ le->be_portlen = 0;
+ }
char *data = le->data;
if (req[reqlen-2] == '\r') {
reqlen -= 2;