]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
RGW - Remove potential string overflow in POSIXDriver
authorDaniel Gryniewicz <dang@redhat.com>
Mon, 15 Apr 2024 15:52:37 +0000 (11:52 -0400)
committerDaniel Gryniewicz <dang@redhat.com>
Mon, 15 Apr 2024 15:52:37 +0000 (11:52 -0400)
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 <dang@redhat.com>
src/rgw/driver/posix/rgw_sal_posix.cc

index 9b1b34fa9e4e0dcda73663175129241e2debc30e..3030c50953ff1bcfd3ec424220755cc80fec8c12 100644 (file)
@@ -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;