projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix double free in silcd.
[silc.git]
/
apps
/
silcd
/
server_util.c
diff --git
a/apps/silcd/server_util.c
b/apps/silcd/server_util.c
index d2fd526caf5691f95d58539f2505086ed0d6f904..74ce18ba2902866107148517f3f961fe645dd714 100644
(file)
--- a/
apps/silcd/server_util.c
+++ b/
apps/silcd/server_util.c
@@
-1547,8
+1547,17
@@
void silc_server_kill_client(SilcServer server,
if (remote_client->connection) {
/* Remove locally conneted client */
SilcPacketStream sock = remote_client->connection;
if (remote_client->connection) {
/* Remove locally conneted client */
SilcPacketStream sock = remote_client->connection;
+
+ if (sock)
+ silc_packet_stream_ref(sock);
+
silc_server_free_sock_user_data(server, sock, NULL);
silc_server_free_sock_user_data(server, sock, NULL);
- silc_server_close_connection(server, sock);
+
+ if (sock) {
+ silc_packet_set_context(sock, NULL);
+ silc_server_close_connection(server, sock);
+ silc_packet_stream_unref(sock);
+ }
} else {
/* Update statistics */
server->stat.clients--;
} else {
/* Update statistics */
server->stat.clients--;