From 15640dd4f52cd004b858c5b1d94340663e1d39af Mon Sep 17 00:00:00 2001 From: zrj Date: Wed, 31 Jan 2018 12:09:59 +0200 Subject: [PATCH] libtcplay: Add some format safety. Limit device prints to 88 chars (should be plenty). While there, add few missing fallthrough. --- lib/libtcplay/humanize.c | 7 +++++++ lib/libtcplay/tcplay.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/libtcplay/humanize.c b/lib/libtcplay/humanize.c index 1c716b83af..876ace41eb 100644 --- a/lib/libtcplay/humanize.c +++ b/lib/libtcplay/humanize.c @@ -91,18 +91,25 @@ _dehumanize_number(const char *buf, uint64_t *dest) switch (tolower(buf[len-1])) { case 'y': multiplier *= 1024; + /* FALLTHROUGH */ case 'z': multiplier *= 1024; + /* FALLTHROUGH */ case 'e': multiplier *= 1024; + /* FALLTHROUGH */ case 'p': multiplier *= 1024; + /* FALLTHROUGH */ case 't': multiplier *= 1024; + /* FALLTHROUGH */ case 'g': multiplier *= 1024; + /* FALLTHROUGH */ case 'm': multiplier *= 1024; + /* FALLTHROUGH */ case 'k': multiplier *= 1024; break; diff --git a/lib/libtcplay/tcplay.c b/lib/libtcplay/tcplay.c index cd882cf19e..3e610a2218 100644 --- a/lib/libtcplay/tcplay.c +++ b/lib/libtcplay/tcplay.c @@ -1792,7 +1792,7 @@ dm_setup(const char *mapname, struct tcplay_info *info) /* /dev/ad0s0a 0 */ /* dev---^ block off --^ */ - snprintf(params, 512, "%s 0", dev); + snprintf(params, 512, "%.88s 0", dev); if ((dm_task_add_target(dmt, 0, INFO_TO_DM_BLOCKS(info, offset), @@ -1807,7 +1807,7 @@ dm_setup(const char *mapname, struct tcplay_info *info) /* aes-cbc-essiv:sha256 7997f8af... 0 /dev/ad0s0a 8 */ /* iv off---^ block off--^ */ - snprintf(params, 512, "%s %s %"PRIu64 " %s %"PRIu64 " %s", + snprintf(params, 512, "%s %s %"PRIu64 " %.88s %"PRIu64 " %s", cipher_chain->cipher->dm_crypt_str, cipher_chain->dm_key, (uint64_t)INFO_TO_DM_BLOCKS(info, skip), dev, (uint64_t)offset, -- 2.11.4.GIT