]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
awssigv4: fix recognition of trailer boundary when no trailing signature
authorMatt Benjamin <mbenjamin@redhat.com>
Sat, 13 Jan 2024 18:57:36 +0000 (13:57 -0500)
committerCasey Bodley <cbodley@redhat.com>
Thu, 4 Jul 2024 20:06:47 +0000 (16:06 -0400)
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
(cherry picked from commit d374a21beb4faac63c0bd920572651079af25209)

src/rgw/rgw_auth_s3.cc

index 762e191936b367f8f150be40b17366ea050f1134..56ed8abdb27d0862b130d16f8c121ee48ec142ba 100644 (file)
@@ -1551,9 +1551,15 @@ bool AWSv4ComplMulti::complete()
     std::string_view expected_trailer_signature;
     std::string calculated_trailer_signature;
 
-    if (tbuf_pos > sarrlen("\r\n0;")) {
-      const std::string_view sv_trailer(trailer_vec.data() + sarrlen("\r\n0;"),
-                                        tbuf_pos - sarrlen("\r\n0;"));
+    /* the trailer boundary is just "\r\n0" when we have no trailer
+     * signature */
+    if (tbuf_pos > sarrlen("\r\n0")) {
+      auto trailer_off = sarrlen("\r\n0");
+      if (*(trailer_vec.data() + trailer_off) == ';') {
+       ++trailer_off;
+      }
+      const std::string_view sv_trailer(
+        trailer_vec.data() + trailer_off, tbuf_pos - trailer_off);
 
       if (cct()->_conf->subsys.should_gather(ceph_subsys_rgw, 10)) [[unlikely]] {
         ldout(cct(), 10) << "trailer_section: " << sv_trailer << dendl;