X-Git-Url: https://git.xinqibao.xyz/slstatus.git/blobdiff_plain/8b5b72b65efeaab5985e704f00e5865e3cfe4528..2994a8d0ba51c8afe889728617b30db351bfd82a:/slstatus.c diff --git a/slstatus.c b/slstatus.c index ad0b960..6a338f9 100644 --- a/slstatus.c +++ b/slstatus.c @@ -699,11 +699,11 @@ wifi_perc(const char *iface) fgets(buf, sizeof(buf), fp); fclose(fp); - datastart = strstr(buf, concat); - if (datastart != NULL) { - datastart = strstr(buf, ":"); - sscanf(datastart + 1, " %*d %d %*d %*d %*d %*d %*d %*d %*d %*d", &perc); + if ((datastart = strstr(buf, concat)) == NULL) { + return smprintf("%s", UNKNOWN_STR); } + datastart = (datastart+(strlen(iface)+1)); + sscanf(datastart + 1, " %*d %d %*d %*d %*d %*d %*d %*d %*d %*d", &perc); return smprintf("%d%%", perc); } @@ -717,7 +717,8 @@ wifi_essid(const char *iface) memset(&wreq, 0, sizeof(struct iwreq)); wreq.u.essid.length = IW_ESSID_MAX_SIZE+1; - sprintf(wreq.ifr_name, iface); + snprintf(wreq.ifr_name, sizeof(wreq.ifr_name), "%s", iface); + if (sockfd == -1) { warn("Failed to get ESSID for interface %s", iface); return smprintf("%s", UNKNOWN_STR);