From dcc55996ba47675e3c2d1cd562972be370a0531d Mon Sep 17 00:00:00 2001 From: John Vogel Date: Mon, 9 Oct 2023 10:29:14 -0400 Subject: [PATCH 1/4] essid.c: change put_status to return int Modify main loop to break out if error and return failure if so. --- essid.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/essid.c b/essid.c index 4a768f0..de45164 100644 --- a/essid.c +++ b/essid.c @@ -19,17 +19,19 @@ char *format = FORMAT; int interval = INTERVAL; char name[IW_ESSID_MAX_SIZE + 1] = {0}; -void put_status(int fd, struct iwreq *rqt) +int put_status(int fd, struct iwreq *rqt) { rqt->u.essid.pointer = name; rqt->u.essid.length = IW_ESSID_MAX_SIZE + 1; if (ioctl(fd, SIOCGIWESSID, rqt) == -1) { perror("ioctl"); - exit(EXIT_FAILURE); + return -1; } printf(format, name); printf("\n"); fflush(stdout); + + return 0; } int main(int argc, char *argv[]) @@ -71,12 +73,15 @@ int main(int argc, char *argv[]) if (snoop) while (true) { - put_status(sock_fd, &request); + if (put_status(sock_fd, &request) == -1) { + name[0] = '\0'; + break; + } sleep(interval); - name[0] = '\0'; } else - put_status(sock_fd, &request); + if (put_status(sock_fd, &request) == -1) + name[0] = '\0'; close(sock_fd); if (strlen(name) > 0) -- 2.42.0