mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-25 07:07:52 +01:00
Assert that some trunnel _new() functions return non-NULL
The trunnel functions are written under the assumption that their allocators can fail, so GCC LTO thinks they might return NULL. In point of fact, they're using tor_malloc() and friends, which can't fail, but GCC won't necessarily figure that out. Fixes part of #27772.
This commit is contained in:
parent
620108ea77
commit
7ace8d5a61
3 changed files with 5 additions and 0 deletions
|
@ -353,6 +353,7 @@ process_socks5_methods_request(socks_request_t *req, int have_user_pass,
|
||||||
{
|
{
|
||||||
socks_result_t res = SOCKS_RESULT_DONE;
|
socks_result_t res = SOCKS_RESULT_DONE;
|
||||||
socks5_server_method_t *trunnel_resp = socks5_server_method_new();
|
socks5_server_method_t *trunnel_resp = socks5_server_method_new();
|
||||||
|
tor_assert(trunnel_resp);
|
||||||
|
|
||||||
socks5_server_method_set_version(trunnel_resp, SOCKS_VER_5);
|
socks5_server_method_set_version(trunnel_resp, SOCKS_VER_5);
|
||||||
|
|
||||||
|
@ -478,6 +479,7 @@ process_socks5_userpass_auth(socks_request_t *req)
|
||||||
socks_result_t res = SOCKS_RESULT_DONE;
|
socks_result_t res = SOCKS_RESULT_DONE;
|
||||||
socks5_server_userpass_auth_t *trunnel_resp =
|
socks5_server_userpass_auth_t *trunnel_resp =
|
||||||
socks5_server_userpass_auth_new();
|
socks5_server_userpass_auth_new();
|
||||||
|
tor_assert(trunnel_resp);
|
||||||
|
|
||||||
if (req->socks_version != SOCKS_VER_5) {
|
if (req->socks_version != SOCKS_VER_5) {
|
||||||
res = SOCKS_RESULT_INVALID;
|
res = SOCKS_RESULT_INVALID;
|
||||||
|
@ -869,6 +871,7 @@ socks_request_set_socks5_error(socks_request_t *req,
|
||||||
socks5_reply_status_t reason)
|
socks5_reply_status_t reason)
|
||||||
{
|
{
|
||||||
socks5_server_reply_t *trunnel_resp = socks5_server_reply_new();
|
socks5_server_reply_t *trunnel_resp = socks5_server_reply_new();
|
||||||
|
tor_assert(trunnel_resp);
|
||||||
|
|
||||||
socks5_server_reply_set_version(trunnel_resp, SOCKS_VER_5);
|
socks5_server_reply_set_version(trunnel_resp, SOCKS_VER_5);
|
||||||
socks5_server_reply_set_reply(trunnel_resp, reason);
|
socks5_server_reply_set_reply(trunnel_resp, reason);
|
||||||
|
|
|
@ -51,6 +51,7 @@ tor_cert_sign_impl(const ed25519_keypair_t *signing_key,
|
||||||
tor_cert_t *torcert = NULL;
|
tor_cert_t *torcert = NULL;
|
||||||
|
|
||||||
ed25519_cert_t *cert = ed25519_cert_new();
|
ed25519_cert_t *cert = ed25519_cert_new();
|
||||||
|
tor_assert(cert); // Trunnel's new functions can return NULL.
|
||||||
cert->cert_type = cert_type;
|
cert->cert_type = cert_type;
|
||||||
cert->exp_field = (uint32_t) CEIL_DIV(now + lifetime, 3600);
|
cert->exp_field = (uint32_t) CEIL_DIV(now + lifetime, 3600);
|
||||||
cert->cert_key_type = signed_key_type;
|
cert->cert_key_type = signed_key_type;
|
||||||
|
|
|
@ -61,6 +61,7 @@ crypto_pwbox(uint8_t **out, size_t *outlen_out,
|
||||||
int rv;
|
int rv;
|
||||||
|
|
||||||
enc = pwbox_encoded_new();
|
enc = pwbox_encoded_new();
|
||||||
|
tor_assert(enc);
|
||||||
|
|
||||||
pwbox_encoded_setlen_skey_header(enc, S2K_MAXLEN);
|
pwbox_encoded_setlen_skey_header(enc, S2K_MAXLEN);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue