projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
silcclient: Fix error path memory freeing
[silc.git]
/
lib
/
silcclient
/
client.c
diff --git
a/lib/silcclient/client.c
b/lib/silcclient/client.c
index f2db81e04f2ae76ff3b7611f98589bac236bffe2..1d64e02fd502848d099880b396bec665e42160b7 100644
(file)
--- a/
lib/silcclient/client.c
+++ b/
lib/silcclient/client.c
@@
-604,7
+604,7
@@
silc_client_add_connection(SilcClient client,
SilcClientConnection conn;
SilcFSMThread thread;
SilcClientConnection conn;
SilcFSMThread thread;
- if (!c
allback
)
+ if (!c
lient || !callback || !remote_host
)
return NULL;
SILC_LOG_DEBUG(("Adding new connection to %s:%d", remote_host, port));
return NULL;
SILC_LOG_DEBUG(("Adding new connection to %s:%d", remote_host, port));
@@
-624,6
+624,7
@@
silc_client_add_connection(SilcClient client,
conn->internal = silc_calloc(1, sizeof(*conn->internal));
if (!conn->internal) {
conn->internal = silc_calloc(1, sizeof(*conn->internal));
if (!conn->internal) {
+ silc_free(conn->remote_host);
silc_free(conn);
return NULL;
}
silc_free(conn);
return NULL;
}
@@
-632,8
+633,9
@@
silc_client_add_connection(SilcClient client,
silc_atomic_init16(&conn->internal->cmd_ident, 0);
if (!silc_hash_alloc("sha1", &conn->internal->sha1hash)) {
silc_atomic_init16(&conn->internal->cmd_ident, 0);
if (!silc_hash_alloc("sha1", &conn->internal->sha1hash)) {
- silc_free(conn);
+ silc_free(conn
->remote_host
);
silc_free(conn->internal);
silc_free(conn->internal);
+ silc_free(conn);
return NULL;
}
return NULL;
}