1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-03 16:23:14 +02:00

irc: remove check of NULL pointers before calling free() (issue #865)

This commit is contained in:
Sébastien Helleu
2024-04-24 23:28:37 +02:00
parent f3a9bfe55e
commit 2bbf289635
26 changed files with 374 additions and 752 deletions
+21 -42
View File
@@ -165,8 +165,7 @@ irc_sasl_mechanism_scram (struct t_irc_server *server,
{
snprintf (string, length + 1, "n,,n=%s,r=%s",
username2, nonce_client_base64);
if (server->sasl_scram_client_first)
free (server->sasl_scram_client_first);
free (server->sasl_scram_client_first);
server->sasl_scram_client_first = strdup (string + 3);
}
}
@@ -191,14 +190,12 @@ irc_sasl_mechanism_scram (struct t_irc_server *server,
{
if (strncmp (attrs[i], "r=", 2) == 0)
{
if (nonce_server)
free (nonce_server);
free (nonce_server);
nonce_server = strdup (attrs[i] + 2);
}
else if (strncmp (attrs[i], "s=", 2) == 0)
{
if (salt_base64)
free (salt_base64);
free (salt_base64);
salt_base64 = strdup (attrs[i] + 2);
}
else if (strncmp (attrs[i], "i=", 2) == 0)
@@ -210,14 +207,12 @@ irc_sasl_mechanism_scram (struct t_irc_server *server,
}
else if (strncmp (attrs[i], "v=", 2) == 0)
{
if (verifier_base64)
free (verifier_base64);
free (verifier_base64);
verifier_base64 = strdup (attrs[i] + 2);
}
else if (strncmp (attrs[i], "e=", 2) == 0)
{
if (attr_error)
free (attr_error);
free (attr_error);
attr_error = strdup (attrs[i] + 2);
}
}
@@ -304,8 +299,7 @@ irc_sasl_mechanism_scram (struct t_irc_server *server,
salted_password,
&salted_password_size))
goto crypto_error;
if (server->sasl_scram_salted_pwd)
free (server->sasl_scram_salted_pwd);
free (server->sasl_scram_salted_pwd);
server->sasl_scram_salted_pwd = malloc (salted_password_size);
if (!server->sasl_scram_salted_pwd)
goto memory_error;
@@ -350,8 +344,7 @@ irc_sasl_mechanism_scram (struct t_irc_server *server,
auth_no_proof);
if ((rc < 0) || (rc >= length))
goto memory_error;
if (server->sasl_scram_auth_message)
free (server->sasl_scram_auth_message);
free (server->sasl_scram_auth_message);
server->sasl_scram_auth_message = strdup (auth_message);
/* RFC: ClientSignature := HMAC(StoredKey, AuthMessage) */
if (!weechat_crypto_hmac (stored_key,
@@ -434,32 +427,20 @@ end:
}
}
if (string)
free (string);
if (username)
free (username);
if (username2)
free (username2);
if (data)
free (data);
free (string);
free (username);
free (username2);
free (data);
if (attrs)
weechat_string_free_split (attrs);
if (nonce_server)
free (nonce_server);
if (salt_base64)
free (salt_base64);
if (salt)
free (salt);
if (verifier_base64)
free (verifier_base64);
if (verifier)
free (verifier);
if (attr_error)
free (attr_error);
if (auth_no_proof)
free (auth_no_proof);
if (auth_message)
free (auth_message);
free (nonce_server);
free (salt_base64);
free (salt);
free (verifier_base64);
free (verifier);
free (attr_error);
free (auth_no_proof);
free (auth_message);
return answer_base64;
}
@@ -506,8 +487,7 @@ irc_sasl_get_key_content (const char *sasl_key, char **sasl_error)
*sasl_error = strdup (str_error);
}
if (key_path)
free (key_path);
free (key_path);
return content;
}
@@ -699,8 +679,7 @@ irc_sasl_mechanism_ecdsa_nist256p_challenge (struct t_irc_server *server,
}
}
if (string)
free (string);
free (string);
return answer_base64;