From: Casey Bodley Date: Thu, 4 Feb 2021 14:47:28 +0000 (-0500) Subject: rgw: fix snprintf() truncate warning in ETagVerifier X-Git-Tag: v16.2.0~174^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=13947aa7f2d968e1160140c5d1ab4398fb93991b;p=ceph.git rgw: fix snprintf() truncate warning in ETagVerifier src/rgw/rgw_etag_verifier.cc: In member function 'virtual void rgw::putobj::ETagVerifier_MPU::calculate_etag()': src/rgw/rgw_etag_verifier.cc:179:12: warning: '%lld' directive output may be truncated writing between 1 and 20 bytes into a region of size 15 [-Wformat-truncation=] "-%lld", (long long)(part_ofs.size())); ^~~~~~~ src/rgw/rgw_etag_verifier.cc:179:12: note: directive argument in the range [-1152921504606846976, 1152921504606846975] Fixes: https://tracker.ceph.com/issues/49169 Signed-off-by: Casey Bodley (cherry picked from commit 58353b1f08d51610431411cecf01e86e872c3ac6) --- diff --git a/src/rgw/rgw_etag_verifier.cc b/src/rgw/rgw_etag_verifier.cc index 05aedb12fc18..47910c28cae8 100644 --- a/src/rgw/rgw_etag_verifier.cc +++ b/src/rgw/rgw_etag_verifier.cc @@ -161,8 +161,12 @@ done: void ETagVerifier_MPU::calculate_etag() { + const uint32_t parts = part_ofs.size(); + constexpr auto digits10 = std::numeric_limits::digits10; + constexpr auto extra = 2 + digits10; // add "-%u\0" at the end + unsigned char m[CEPH_CRYPTO_MD5_DIGESTSIZE], mpu_m[CEPH_CRYPTO_MD5_DIGESTSIZE]; - char final_etag_str[CEPH_CRYPTO_MD5_DIGESTSIZE * 2 + 16]; + char final_etag_str[CEPH_CRYPTO_MD5_DIGESTSIZE * 2 + extra]; /* Return early if ETag has already been calculated */ if (!calculated_etag.empty()) @@ -176,7 +180,7 @@ void ETagVerifier_MPU::calculate_etag() buf_to_hex(mpu_m, CEPH_CRYPTO_MD5_DIGESTSIZE, final_etag_str); snprintf(&final_etag_str[CEPH_CRYPTO_MD5_DIGESTSIZE * 2], sizeof(final_etag_str) - CEPH_CRYPTO_MD5_DIGESTSIZE * 2, - "-%lld", (long long)(part_ofs.size())); + "-%u", parts); calculated_etag = final_etag_str; ldout(cct, 20) << "MPU calculated ETag:" << calculated_etag << dendl;