From: Daniel Gryniewicz Date: Mon, 15 Apr 2024 15:52:37 +0000 (-0400) Subject: RGW - Remove potential string overflow in POSIXDriver X-Git-Tag: v20.0.0~1754^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=57e62ea042162dacb60e6dd7c86c2533008fd9f9;p=ceph.git 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 --- diff --git a/src/rgw/driver/posix/rgw_sal_posix.cc b/src/rgw/driver/posix/rgw_sal_posix.cc index 9b1b34fa9e4e..3030c50953ff 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;