]> 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>
Tue, 13 Feb 2024 18:28:33 +0000 (13:28 -0500)
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
src/rgw/rgw_auth_s3.cc

index 86ea87388dbb744cebd3d9d22fe664da69d323e0..82b2524bd5021503580ee76c675506441853ca31 100644 (file)
@@ -1552,9 +1552,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;