]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
Merge pull request #28172 from joke-lee/rgw-sts-bad-token
authorCasey Bodley <cbodley@users.noreply.github.com>
Thu, 20 Jun 2019 17:10:31 +0000 (13:10 -0400)
committerGitHub <noreply@github.com>
Thu, 20 Jun 2019 17:10:31 +0000 (13:10 -0400)
rgw: fix rgw crash and set correct error code

Reviewed-by: Matt Benjamin <mbenjamin@redhat.com>
Reviewed-by: Pritha Srivastava <prsrivas@redhat.com>
1  2 
src/rgw/rgw_rest_s3.cc

index ae1065160ad482aaebfdab63efc6a1b82de58586,1a90e8d47e415ef9120b1130f14e7413a6cfa829..67bd8f300a00552ce695e6dab63b689d240fd9d4
@@@ -4611,12 -4474,17 +4611,17 @@@ rgw::auth::s3::STSEngine::get_session_t
  
    ret = keyhandler->decrypt(en_input, dec_output, &error);
    if (ret < 0) {
 -    ldout(cct, 0) << "ERROR: Decryption failed: " << error << dendl;
 +    ldpp_dout(dpp, 0) << "ERROR: Decryption failed: " << error << dendl;
      return -EPERM;
    } else {
-     dec_output.append('\0');
-     auto iter = dec_output.cbegin();
-     decode(token, iter);
+     try {
+       dec_output.append('\0');
+       auto iter = dec_output.cbegin();
+       decode(token, iter);
+     } catch (const buffer::error& e) {
+       ldout(cct, 0) << "ERROR: decode SessionToken failed: " << error << dendl;
+       return -EINVAL;
+     }
    }
    return 0;
  }