Project

General

Profile

Backport #22618

Updated by Nathan Cutler over 6 years ago

https://github.com/ceph/ceph/pull/19847 When put bucket policy with invalid effect, the RGW process panics with "Segmentation fault". 

 Example bucket policy 
 { 
     'Statement':[{ 
         'Effect':'All', 
     }] 
 } 

 RGW panic trace 
      0> 2017-12-26 15:05:52.479 7f45b4e33700 -1 *** Caught signal (Segmentation fault) ** 
  in thread 7f45b4e33700 thread_name:civetweb-worker 

  ceph version 13.0.0-4024-g0ba3308 (0ba33080769d8aa696b7e704c01edf5c05cab6c1) mimic (dev) 
  1: (()+0x1f9bec) [0x556929ae0bec] 
  2: (()+0x11390) [0x7f45edda6390] 
  3: (rgw::IAM::ParseState::do_string(CephContext*, char const*, unsigned long)+0x200) [0x556929d59030] 
  4: (void rapidjson::GenericReader<rapidjson::UTF8<char>, rapidjson::UTF8<char>, rapidjson::CrtAllocator>::ParseString<96u, rapidjson::GenericStringStream<rapidjson::UTF8<char> >, rgw::IAM::PolicyParser>(rapidjson::GenericStringStream<rapidjson::UTF8<char> >&, rgw::IAM::PolicyParser&, bool)+0x11a) [0x556929d6457a] 
  5: (void rapidjson::GenericReader<rapidjson::UTF8<char>, rapidjson::UTF8<char>, rapidjson::CrtAllocator>::ParseObject<96u, rapidjson::GenericStringStream<rapidjson::UTF8<char> >, rgw::IAM::PolicyParser>(rapidjson::GenericStringStream<rapidjson::UTF8<char> >&, rgw::IAM::PolicyParser&)+0x147) [0x556929d650d7] 
  6: (void rapidjson::GenericReader<rapidjson::UTF8<char>, rapidjson::UTF8<char>, rapidjson::CrtAllocator>::ParseValue<96u, rapidjson::GenericStringStream<rapidjson::UTF8<char> >, rgw::IAM::PolicyParser>(rapidjson::GenericStringStream<rapidjson::UTF8<char> >&, rgw::IAM::PolicyParser&)+0x156) [0x556929d64cb6] 
  7: (void rapidjson::GenericReader<rapidjson::UTF8<char>, rapidjson::UTF8<char>, rapidjson::CrtAllocator>::ParseObject<96u, rapidjson::GenericStringStream<rapidjson::UTF8<char> >, rgw::IAM::PolicyParser>(rapidjson::GenericStringStream<rapidjson::UTF8<char> >&, rgw::IAM::PolicyParser&)+0x147) [0x556929d650d7] 
  8: (rgw::IAM::Policy::Policy(CephContext*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ceph::buffer::list const&)+0x123) [0x556929d5a7e3] 
  9: (RGWPutBucketPolicy::execute()+0x97) [0x556929bbb907] 
  10: (rgw_process_authenticated(RGWHandler_REST*, RGWOp*&, RGWRequest*, req_state*, bool)+0x14f) [0x556929becfbf] 
  11: (process_request(RGWRados*, RGWREST*, RGWRequest*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rgw::auth::StrategyRegistry const&, RGWRestfulIO*, OpsLogSocket*)+0x186c) [0x556929beea3c] 
  12: (RGWCivetWebFrontend::process(mg_connection*)+0x39c) [0x556929a991fc] 
  13: (()+0x1eb189) [0x556929ad2189] 
  14: (()+0x1ecb59) [0x556929ad3b59] 
  15: (()+0x76ba) [0x7f45edd9c6ba] 
  16: (clone()+0x6d) [0x7f45e39a63dd] 
  NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this.

Back