From 3651129e55e2bc115c70d8f29a0ab43eaa9ff0e5 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Tue, 18 Jun 2019 14:24:07 +0200 Subject: [PATCH] fix read after string end outs is not a zero-terminated string but has its length given by outslen, so use that (with a maximum of the size of msg) Signed-off-by: Dominik Csapak --- RADOS.xs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/RADOS.xs b/RADOS.xs index f3f5516..7eca024 100644 --- a/RADOS.xs +++ b/RADOS.xs @@ -131,8 +131,14 @@ CODE: if (ret < 0) { char msg[4096]; - snprintf(msg, sizeof(msg), "mon_command failed - %s\n", outs); + if (outslen > sizeof(msg)) { + outslen = sizeof(msg); + } + snprintf(msg, sizeof(msg), "mon_command failed - %.*s\n", (int)outslen, outs); rados_buffer_free(outs); + if (outbuf != NULL) { + rados_buffer_free(outbuf); + } die(msg); } -- 2.39.2