From a0ac572611bcd7f95d7d318cdd2f20582c75e828 Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Sat, 15 Feb 2014 16:45:57 +0200 Subject: [PATCH] EAP-SIM DB: Remove client socket file on connect() error If the connection from hostapd authentication server to hlr_auc_gw fails due to hlr_auc_gw not running yet, the local socket file was left behind. Delete the socket file on connect() failure path. Signed-off-by: Jouni Malinen --- src/eap_server/eap_sim_db.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/eap_server/eap_sim_db.c b/src/eap_server/eap_sim_db.c index 45660ed7d..bc2cbe5bc 100644 --- a/src/eap_server/eap_sim_db.c +++ b/src/eap_server/eap_sim_db.c @@ -639,6 +639,11 @@ static int eap_sim_db_open_socket(struct eap_sim_db_data *data) "/tmp/eap_sim_db_%d-%d", getpid(), counter++); os_free(data->local_sock); data->local_sock = os_strdup(addr.sun_path); + if (data->local_sock == NULL) { + close(data->sock); + data->sock = -1; + return -1; + } if (bind(data->sock, (struct sockaddr *) &addr, sizeof(addr)) < 0) { wpa_printf(MSG_INFO, "bind(eap_sim_db): %s", strerror(errno)); close(data->sock); @@ -657,6 +662,9 @@ static int eap_sim_db_open_socket(struct eap_sim_db_data *data) os_strlen(addr.sun_path)); close(data->sock); data->sock = -1; + unlink(data->local_sock); + os_free(data->local_sock); + data->local_sock = NULL; return -1; }