In RGWHTTPManager::manage_pending_request(), before unregistering
or unlinking the http requests, empty the reqs_change_state list
to avoid use after free.
Signed-off-by: Soumya Koduri <skoduri@redhat.com>
(cherry picked from commit
b210437e5f28d53e770dd6938ce3c4be443da055)
RWLock::WLocker wl(reqs_lock);
+ if (!reqs_change_state.empty()) {
+ for (auto siter : reqs_change_state) {
+ _set_req_state(siter);
+ }
+ reqs_change_state.clear();
+ }
+
if (!unregistered_reqs.empty()) {
for (auto& r : unregistered_reqs) {
_unlink_request(r);
}
}
- if (!reqs_change_state.empty()) {
- for (auto siter : reqs_change_state) {
- _set_req_state(siter);
- }
- reqs_change_state.clear();
- }
-
for (auto piter : remove_reqs) {
rgw_http_req_data *req_data = piter.first;
int r = piter.second;