1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2025-02-19 04:41:11 +00:00

fix: string leak regression when udp announces fail (#2440)

This commit is contained in:
Charles Kerr 2022-01-18 11:20:14 -06:00 committed by GitHub
parent 546fefbd9c
commit 0e3a695af2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -378,7 +378,7 @@ static void tau_announce_request_fail(
{ {
request->response.did_connect = did_connect; request->response.did_connect = did_connect;
request->response.did_timeout = did_timeout; request->response.did_timeout = did_timeout;
request->response.errmsg = tr_strvDup(errmsg); request->response.errmsg = errmsg;
tau_announce_request_finished(request); tau_announce_request_finished(request);
} }
@ -595,12 +595,12 @@ static void on_tracker_connection_response(struct tau_tracker* tracker, tau_acti
{ {
size_t const buflen = buf != nullptr ? evbuffer_get_length(buf) : 0; size_t const buflen = buf != nullptr ? evbuffer_get_length(buf) : 0;
char* const errmsg = action == TAU_ACTION_ERROR && buflen > 0 ? tr_strndup(evbuffer_pullup(buf, -1), buflen) : auto const errmsg = action == TAU_ACTION_ERROR && buflen > 0 ?
tr_strdup(_("Connection failed")); std::string_view{ reinterpret_cast<char const*>(evbuffer_pullup(buf, -1)), buflen } :
std::string_view{ _("Connection failed") };
dbgmsg(tracker->key, "%s", errmsg); dbgmsg(tracker->key, "%" TR_PRIsv, TR_PRIsv_ARG(errmsg));
tau_tracker_fail_all(tracker, true, false, errmsg); tau_tracker_fail_all(tracker, true, false, errmsg);
tr_free(errmsg);
} }
tau_tracker_upkeep(tracker); tau_tracker_upkeep(tracker);