From 2f72f5e0cccdc4838c9e9dad7adacc1fddac397c Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Sun, 1 Dec 2013 18:23:30 +0100 Subject: [PATCH] Detect one more potential error case --- src/applets/wpa_supplicant.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/applets/wpa_supplicant.c b/src/applets/wpa_supplicant.c index 5a8f9b7..ea01a9d 100644 --- a/src/applets/wpa_supplicant.c +++ b/src/applets/wpa_supplicant.c @@ -329,11 +329,17 @@ static gboolean _start_timeout(gpointer data) return wpa->helper->error(NULL, path, TRUE); } /* create the local socket */ + memset(&lu, 0, sizeof(lu)); + if(snprintf(lu.sun_path, sizeof(lu.sun_path), "%s", wpa->path) + >= sizeof(lu.sun_path)) + { + unlink(wpa->path); + /* XXX make sure this error is explicit enough */ + return _wpa_error(wpa, wpa->path, TRUE); + } + lu.sun_family = AF_LOCAL; if((wpa->fd = socket(AF_LOCAL, SOCK_DGRAM, 0)) == -1) return _wpa_error(wpa, "socket", TRUE); - memset(&lu, 0, sizeof(lu)); - snprintf(lu.sun_path, sizeof(lu.sun_path), "%s", wpa->path); - lu.sun_family = AF_LOCAL; if(bind(wpa->fd, (struct sockaddr *)&lu, SUN_LEN(&lu)) != 0) { close(wpa->fd);