From 57e62ea042162dacb60e6dd7c86c2533008fd9f9 Mon Sep 17 00:00:00 2001 From: Daniel Gryniewicz Date: Mon, 15 Apr 2024 11:52:37 -0400 Subject: [PATCH] RGW - Remove potential string overflow in POSIXDriver There was a warning that a long long could generate a string 21 bytes long if it was maxed out. This can't actually happen, because we're counting up. However, there's no need to use an int64_t, int32_t is fine. Fixes: https://tracker.ceph.com/issues/65471 Signed-off-by: Daniel Gryniewicz --- src/rgw/driver/posix/rgw_sal_posix.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rgw/driver/posix/rgw_sal_posix.cc b/src/rgw/driver/posix/rgw_sal_posix.cc index 9b1b34fa9e4..3030c50953f 100644 --- a/src/rgw/driver/posix/rgw_sal_posix.cc +++ b/src/rgw/driver/posix/rgw_sal_posix.cc @@ -2187,7 +2187,7 @@ int POSIXObject::generate_attrs(const DoutPrefixProvider* dpp, optional_yield y) int POSIXObject::generate_mp_etag(const DoutPrefixProvider* dpp, optional_yield y) { - int64_t count = 0; + int32_t count = 0; char etag_buf[CEPH_CRYPTO_MD5_DIGESTSIZE]; char final_etag_str[CEPH_CRYPTO_MD5_DIGESTSIZE * 2 + 16]; std::string etag; @@ -2243,7 +2243,7 @@ int POSIXObject::generate_mp_etag(const DoutPrefixProvider* dpp, optional_yield buf_to_hex((unsigned char *)etag_buf, sizeof(etag_buf), final_etag_str); snprintf(&final_etag_str[CEPH_CRYPTO_MD5_DIGESTSIZE * 2], sizeof(final_etag_str) - CEPH_CRYPTO_MD5_DIGESTSIZE * 2, - "-%lld", (long long)count); + "-%" PRId32, count); etag = final_etag_str; ldpp_dout(dpp, 10) << "calculated etag: " << etag << dendl; -- 2.39.5