the http manager's background thread is processing responses and logging
any errors. but its call to finish_request() -> complete_request() drops
its reference with req_data->put() before logging the error message in
req_data->error_buf. if put() dropped the last reference, we'd access
error_buf after it's freed
Fixes: https://tracker.ceph.com/issues/67522
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit
0e00093771010eef907f77eeb281ca2ee789ad9c)
http_status = err.http_ret;
}
int id = req_data->id;
- finish_request(req_data, status, http_status);
switch (result) {
case CURLE_OK:
break;
dout(20) << "ERROR: curl error: " << curl_easy_strerror((CURLcode)result) << " req_data->error_buf=" << req_data->error_buf << dendl;
break;
}
+ finish_request(req_data, status, http_status);
}
}
}