summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFerenc Wágner <wferi@niif.hu>2015-07-08 14:41:27 +0200
committerMarian Csontos <mcsontos@redhat.com>2015-08-18 16:23:38 +0200
commite3ce60e4491b8186256fd7a5084791725b726785 (patch)
tree6fd9da6045fa68889c685f3c64935eb5a8fcfd82
parent6ddcaa22bbff9928e8017797fc7ab44b8085e2a5 (diff)
downloadlvm2-dev-mcsontos-cmirrord-test.tar.gz
cmirrord: avoid resync buffer overflow in LOG_SPRINTdev-mcsontos-cmirrord-test
Use snprintf() instead of sprintf() to exclude the possibility of overflowing the resync history buffers.
-rw-r--r--daemons/cmirrord/functions.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/daemons/cmirrord/functions.c b/daemons/cmirrord/functions.c
index f6e09180d..61b3e118f 100644
--- a/daemons/cmirrord/functions.c
+++ b/daemons/cmirrord/functions.c
@@ -32,12 +32,13 @@
#define LOG_OFFSET 2
#define RESYNC_HISTORY 50
+#define RESYNC_BUFLEN 128
//static char resync_history[RESYNC_HISTORY][128];
//static int idx = 0;
#define LOG_SPRINT(_lc, f, arg...) do { \
lc->idx++; \
lc->idx = lc->idx % RESYNC_HISTORY; \
- sprintf(lc->resync_history[lc->idx], f, ## arg); \
+ snprintf(lc->resync_history[lc->idx], RESYNC_BUFLEN, f, ## arg); \
} while (0)
struct log_header {
@@ -88,7 +89,7 @@ struct log_c {
size_t disk_size; /* size of disk_buffer in bytes */
void *disk_buffer; /* aligned memory for O_DIRECT */
int idx;
- char resync_history[RESYNC_HISTORY][128];
+ char resync_history[RESYNC_HISTORY][RESYNC_BUFLEN];
};
struct mark_entry {