diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c index 9f5d4f403..793faec58 100644 --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c @@ -2074,7 +2074,8 @@ static char * wpa_supplicant_ie_txt(char *pos, char *end, const char *proto, const u8 *ie, size_t ie_len) { struct wpa_ie_data data; - int first, ret; + char *start; + int ret; ret = os_snprintf(pos, end - pos, "[%s-", proto); if (ret < 0 || ret >= end - pos) @@ -2089,62 +2090,58 @@ static char * wpa_supplicant_ie_txt(char *pos, char *end, const char *proto, return pos; } - first = 1; + start = pos; if (data.key_mgmt & WPA_KEY_MGMT_IEEE8021X) { - ret = os_snprintf(pos, end - pos, "%sEAP", first ? "" : "+"); + ret = os_snprintf(pos, end - pos, "%sEAP", + pos == start ? "" : "+"); if (ret < 0 || ret >= end - pos) return pos; pos += ret; - first = 0; } if (data.key_mgmt & WPA_KEY_MGMT_PSK) { - ret = os_snprintf(pos, end - pos, "%sPSK", first ? "" : "+"); + ret = os_snprintf(pos, end - pos, "%sPSK", + pos == start ? "" : "+"); if (ret < 0 || ret >= end - pos) return pos; pos += ret; - first = 0; } if (data.key_mgmt & WPA_KEY_MGMT_WPA_NONE) { - ret = os_snprintf(pos, end - pos, "%sNone", first ? "" : "+"); + ret = os_snprintf(pos, end - pos, "%sNone", + pos == start ? "" : "+"); if (ret < 0 || ret >= end - pos) return pos; pos += ret; - first = 0; } #ifdef CONFIG_IEEE80211R if (data.key_mgmt & WPA_KEY_MGMT_FT_IEEE8021X) { ret = os_snprintf(pos, end - pos, "%sFT/EAP", - first ? "" : "+"); + pos == start ? "" : "+"); if (ret < 0 || ret >= end - pos) return pos; pos += ret; - first = 0; } if (data.key_mgmt & WPA_KEY_MGMT_FT_PSK) { ret = os_snprintf(pos, end - pos, "%sFT/PSK", - first ? "" : "+"); + pos == start ? "" : "+"); if (ret < 0 || ret >= end - pos) return pos; pos += ret; - first = 0; } #endif /* CONFIG_IEEE80211R */ #ifdef CONFIG_IEEE80211W if (data.key_mgmt & WPA_KEY_MGMT_IEEE8021X_SHA256) { ret = os_snprintf(pos, end - pos, "%sEAP-SHA256", - first ? "" : "+"); + pos == start ? "" : "+"); if (ret < 0 || ret >= end - pos) return pos; pos += ret; - first = 0; } if (data.key_mgmt & WPA_KEY_MGMT_PSK_SHA256) { ret = os_snprintf(pos, end - pos, "%sPSK-SHA256", - first ? "" : "+"); + pos == start ? "" : "+"); if (ret < 0 || ret >= end - pos) return pos; pos += ret; - first = 0; } #endif /* CONFIG_IEEE80211W */ @@ -2862,7 +2859,7 @@ static int ctrl_iface_get_capability_pairwise(int res, char *strict, struct wpa_driver_capa *capa, char *buf, size_t buflen) { - int ret, first = 1; + int ret; char *pos, *end; size_t len; unsigned int i; @@ -2882,11 +2879,11 @@ static int ctrl_iface_get_capability_pairwise(int res, char *strict, for (i = 0; i < ARRAY_SIZE(ciphers); i++) { if (!ciphers[i].group_only && capa->enc & ciphers[i].capa) { ret = os_snprintf(pos, end - pos, "%s%s", - first ? "" : " ", ciphers[i].name); + pos == buf ? "" : " ", + ciphers[i].name); if (ret < 0 || ret >= end - pos) return pos - buf; pos += ret; - first = 0; } } @@ -2898,7 +2895,7 @@ static int ctrl_iface_get_capability_group(int res, char *strict, struct wpa_driver_capa *capa, char *buf, size_t buflen) { - int ret, first = 1; + int ret; char *pos, *end; size_t len; unsigned int i; @@ -2918,11 +2915,11 @@ static int ctrl_iface_get_capability_group(int res, char *strict, for (i = 0; i < ARRAY_SIZE(ciphers); i++) { if (capa->enc & ciphers[i].capa) { ret = os_snprintf(pos, end - pos, "%s%s", - first ? "" : " ", ciphers[i].name); + pos == buf ? "" : " ", + ciphers[i].name); if (ret < 0 || ret >= end - pos) return pos - buf; pos += ret; - first = 0; } } @@ -2987,7 +2984,7 @@ static int ctrl_iface_get_capability_proto(int res, char *strict, struct wpa_driver_capa *capa, char *buf, size_t buflen) { - int ret, first = 1; + int ret; char *pos, *end; size_t len; @@ -3005,20 +3002,20 @@ static int ctrl_iface_get_capability_proto(int res, char *strict, if (capa->key_mgmt & (WPA_DRIVER_CAPA_KEY_MGMT_WPA2 | WPA_DRIVER_CAPA_KEY_MGMT_WPA2_PSK)) { - ret = os_snprintf(pos, end - pos, "%sRSN", first ? "" : " "); + ret = os_snprintf(pos, end - pos, "%sRSN", + pos == buf ? "" : " "); if (ret < 0 || ret >= end - pos) return pos - buf; pos += ret; - first = 0; } if (capa->key_mgmt & (WPA_DRIVER_CAPA_KEY_MGMT_WPA | WPA_DRIVER_CAPA_KEY_MGMT_WPA_PSK)) { - ret = os_snprintf(pos, end - pos, "%sWPA", first ? "" : " "); + ret = os_snprintf(pos, end - pos, "%sWPA", + pos == buf ? "" : " "); if (ret < 0 || ret >= end - pos) return pos - buf; pos += ret; - first = 0; } return pos - buf; @@ -3029,7 +3026,7 @@ static int ctrl_iface_get_capability_auth_alg(int res, char *strict, struct wpa_driver_capa *capa, char *buf, size_t buflen) { - int ret, first = 1; + int ret; char *pos, *end; size_t len; @@ -3046,28 +3043,27 @@ static int ctrl_iface_get_capability_auth_alg(int res, char *strict, } if (capa->auth & (WPA_DRIVER_AUTH_OPEN)) { - ret = os_snprintf(pos, end - pos, "%sOPEN", first ? "" : " "); + ret = os_snprintf(pos, end - pos, "%sOPEN", + pos == buf ? "" : " "); if (ret < 0 || ret >= end - pos) return pos - buf; pos += ret; - first = 0; } if (capa->auth & (WPA_DRIVER_AUTH_SHARED)) { ret = os_snprintf(pos, end - pos, "%sSHARED", - first ? "" : " "); + pos == buf ? "" : " "); if (ret < 0 || ret >= end - pos) return pos - buf; pos += ret; - first = 0; } if (capa->auth & (WPA_DRIVER_AUTH_LEAP)) { - ret = os_snprintf(pos, end - pos, "%sLEAP", first ? "" : " "); + ret = os_snprintf(pos, end - pos, "%sLEAP", + pos == buf ? "" : " "); if (ret < 0 || ret >= end - pos) return pos - buf; pos += ret; - first = 0; } return pos - buf; @@ -3078,7 +3074,7 @@ static int ctrl_iface_get_capability_modes(int res, char *strict, struct wpa_driver_capa *capa, char *buf, size_t buflen) { - int ret, first = 1; + int ret; char *pos, *end; size_t len; @@ -3095,19 +3091,19 @@ static int ctrl_iface_get_capability_modes(int res, char *strict, } if (capa->flags & WPA_DRIVER_FLAGS_IBSS) { - ret = os_snprintf(pos, end - pos, "%sIBSS", first ? "" : " "); + ret = os_snprintf(pos, end - pos, "%sIBSS", + pos == buf ? "" : " "); if (ret < 0 || ret >= end - pos) return pos - buf; pos += ret; - first = 0; } if (capa->flags & WPA_DRIVER_FLAGS_AP) { - ret = os_snprintf(pos, end - pos, "%sAP", first ? "" : " "); + ret = os_snprintf(pos, end - pos, "%sAP", + pos == buf ? "" : " "); if (ret < 0 || ret >= end - pos) return pos - buf; pos += ret; - first = 0; } return pos - buf;