Use helper function for writing cipher suite names
Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
031453265f
commit
0282a8c46a
5 changed files with 75 additions and 157 deletions
|
@ -635,20 +635,9 @@ static int hostapd_ctrl_iface_get_config(struct hostapd_data *hapd,
|
||||||
pos += ret;
|
pos += ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hapd->conf->wpa && hapd->conf->wpa_group == WPA_CIPHER_CCMP) {
|
if (hapd->conf->wpa) {
|
||||||
ret = os_snprintf(pos, end - pos, "group_cipher=CCMP\n");
|
ret = os_snprintf(pos, end - pos, "group_cipher=%s\n",
|
||||||
if (ret < 0 || ret >= end - pos)
|
wpa_cipher_txt(hapd->conf->wpa_group));
|
||||||
return pos - buf;
|
|
||||||
pos += ret;
|
|
||||||
} else if (hapd->conf->wpa &&
|
|
||||||
hapd->conf->wpa_group == WPA_CIPHER_GCMP) {
|
|
||||||
ret = os_snprintf(pos, end - pos, "group_cipher=GCMP\n");
|
|
||||||
if (ret < 0 || ret >= end - pos)
|
|
||||||
return pos - buf;
|
|
||||||
pos += ret;
|
|
||||||
} else if (hapd->conf->wpa &&
|
|
||||||
hapd->conf->wpa_group == WPA_CIPHER_TKIP) {
|
|
||||||
ret = os_snprintf(pos, end - pos, "group_cipher=TKIP\n");
|
|
||||||
if (ret < 0 || ret >= end - pos)
|
if (ret < 0 || ret >= end - pos)
|
||||||
return pos - buf;
|
return pos - buf;
|
||||||
pos += ret;
|
pos += ret;
|
||||||
|
@ -660,24 +649,11 @@ static int hostapd_ctrl_iface_get_config(struct hostapd_data *hapd,
|
||||||
return pos - buf;
|
return pos - buf;
|
||||||
pos += ret;
|
pos += ret;
|
||||||
|
|
||||||
if (hapd->conf->rsn_pairwise & WPA_CIPHER_CCMP) {
|
ret = wpa_write_ciphers(pos, end, hapd->conf->rsn_pairwise,
|
||||||
ret = os_snprintf(pos, end - pos, "CCMP ");
|
" ");
|
||||||
if (ret < 0 || ret >= end - pos)
|
if (ret < 0)
|
||||||
return pos - buf;
|
return pos - buf;
|
||||||
pos += ret;
|
pos += ret;
|
||||||
}
|
|
||||||
if (hapd->conf->rsn_pairwise & WPA_CIPHER_GCMP) {
|
|
||||||
ret = os_snprintf(pos, end - pos, "GCMP ");
|
|
||||||
if (ret < 0 || ret >= end - pos)
|
|
||||||
return pos - buf;
|
|
||||||
pos += ret;
|
|
||||||
}
|
|
||||||
if (hapd->conf->rsn_pairwise & WPA_CIPHER_TKIP) {
|
|
||||||
ret = os_snprintf(pos, end - pos, "TKIP ");
|
|
||||||
if (ret < 0 || ret >= end - pos)
|
|
||||||
return pos - buf;
|
|
||||||
pos += ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = os_snprintf(pos, end - pos, "\n");
|
ret = os_snprintf(pos, end - pos, "\n");
|
||||||
if (ret < 0 || ret >= end - pos)
|
if (ret < 0 || ret >= end - pos)
|
||||||
|
@ -691,24 +667,11 @@ static int hostapd_ctrl_iface_get_config(struct hostapd_data *hapd,
|
||||||
return pos - buf;
|
return pos - buf;
|
||||||
pos += ret;
|
pos += ret;
|
||||||
|
|
||||||
if (hapd->conf->wpa_pairwise & WPA_CIPHER_CCMP) {
|
ret = wpa_write_ciphers(pos, end, hapd->conf->rsn_pairwise,
|
||||||
ret = os_snprintf(pos, end - pos, "CCMP ");
|
" ");
|
||||||
if (ret < 0 || ret >= end - pos)
|
if (ret < 0)
|
||||||
return pos - buf;
|
return pos - buf;
|
||||||
pos += ret;
|
pos += ret;
|
||||||
}
|
|
||||||
if (hapd->conf->wpa_pairwise & WPA_CIPHER_GCMP) {
|
|
||||||
ret = os_snprintf(pos, end - pos, "GCMP ");
|
|
||||||
if (ret < 0 || ret >= end - pos)
|
|
||||||
return pos - buf;
|
|
||||||
pos += ret;
|
|
||||||
}
|
|
||||||
if (hapd->conf->wpa_pairwise & WPA_CIPHER_TKIP) {
|
|
||||||
ret = os_snprintf(pos, end - pos, "TKIP ");
|
|
||||||
if (ret < 0 || ret >= end - pos)
|
|
||||||
return pos - buf;
|
|
||||||
pos += ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = os_snprintf(pos, end - pos, "\n");
|
ret = os_snprintf(pos, end - pos, "\n");
|
||||||
if (ret < 0 || ret >= end - pos)
|
if (ret < 0 || ret >= end - pos)
|
||||||
|
|
|
@ -1291,3 +1291,55 @@ int wpa_parse_cipher(const char *value)
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int wpa_write_ciphers(char *start, char *end, int ciphers, const char *delim)
|
||||||
|
{
|
||||||
|
char *pos = start;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (ciphers & WPA_CIPHER_CCMP) {
|
||||||
|
ret = os_snprintf(pos, end - pos, "%sCCMP",
|
||||||
|
pos == start ? "" : delim);
|
||||||
|
if (ret < 0 || ret >= end - pos)
|
||||||
|
return -1;
|
||||||
|
pos += ret;
|
||||||
|
}
|
||||||
|
if (ciphers & WPA_CIPHER_GCMP) {
|
||||||
|
ret = os_snprintf(pos, end - pos, "%sGCMP",
|
||||||
|
pos == start ? "" : delim);
|
||||||
|
if (ret < 0 || ret >= end - pos)
|
||||||
|
return -1;
|
||||||
|
pos += ret;
|
||||||
|
}
|
||||||
|
if (ciphers & WPA_CIPHER_TKIP) {
|
||||||
|
ret = os_snprintf(pos, end - pos, "%sTKIP",
|
||||||
|
pos == start ? "" : delim);
|
||||||
|
if (ret < 0 || ret >= end - pos)
|
||||||
|
return -1;
|
||||||
|
pos += ret;
|
||||||
|
}
|
||||||
|
if (ciphers & WPA_CIPHER_WEP104) {
|
||||||
|
ret = os_snprintf(pos, end - pos, "%sWEP104",
|
||||||
|
pos == start ? "" : delim);
|
||||||
|
if (ret < 0 || ret >= end - pos)
|
||||||
|
return -1;
|
||||||
|
pos += ret;
|
||||||
|
}
|
||||||
|
if (ciphers & WPA_CIPHER_WEP40) {
|
||||||
|
ret = os_snprintf(pos, end - pos, "%sWEP40",
|
||||||
|
pos == start ? "" : delim);
|
||||||
|
if (ret < 0 || ret >= end - pos)
|
||||||
|
return -1;
|
||||||
|
pos += ret;
|
||||||
|
}
|
||||||
|
if (ciphers & WPA_CIPHER_NONE) {
|
||||||
|
ret = os_snprintf(pos, end - pos, "%sNONE",
|
||||||
|
pos == start ? "" : delim);
|
||||||
|
if (ret < 0 || ret >= end - pos)
|
||||||
|
return -1;
|
||||||
|
pos += ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return pos - start;
|
||||||
|
}
|
||||||
|
|
|
@ -399,5 +399,6 @@ int wpa_cipher_put_suites(u8 *pos, int ciphers);
|
||||||
int wpa_pick_pairwise_cipher(int ciphers, int none_allowed);
|
int wpa_pick_pairwise_cipher(int ciphers, int none_allowed);
|
||||||
int wpa_pick_group_cipher(int ciphers);
|
int wpa_pick_group_cipher(int ciphers);
|
||||||
int wpa_parse_cipher(const char *value);
|
int wpa_parse_cipher(const char *value);
|
||||||
|
int wpa_write_ciphers(char *start, char *end, int ciphers, const char *delim);
|
||||||
|
|
||||||
#endif /* WPA_COMMON_H */
|
#endif /* WPA_COMMON_H */
|
||||||
|
|
|
@ -647,72 +647,13 @@ static int wpa_config_parse_cipher(int line, const char *value)
|
||||||
#ifndef NO_CONFIG_WRITE
|
#ifndef NO_CONFIG_WRITE
|
||||||
static char * wpa_config_write_cipher(int cipher)
|
static char * wpa_config_write_cipher(int cipher)
|
||||||
{
|
{
|
||||||
char *buf, *pos, *end;
|
char *buf = os_zalloc(50);
|
||||||
int ret;
|
|
||||||
|
|
||||||
pos = buf = os_zalloc(50);
|
|
||||||
if (buf == NULL)
|
if (buf == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
end = buf + 50;
|
|
||||||
|
|
||||||
if (cipher & WPA_CIPHER_CCMP) {
|
if (wpa_write_ciphers(buf, buf + 50, cipher, " ") < 0) {
|
||||||
ret = os_snprintf(pos, end - pos, "%sCCMP",
|
os_free(buf);
|
||||||
pos == buf ? "" : " ");
|
return NULL;
|
||||||
if (ret < 0 || ret >= end - pos) {
|
|
||||||
end[-1] = '\0';
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
pos += ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cipher & WPA_CIPHER_GCMP) {
|
|
||||||
ret = os_snprintf(pos, end - pos, "%sGCMP",
|
|
||||||
pos == buf ? "" : " ");
|
|
||||||
if (ret < 0 || ret >= end - pos) {
|
|
||||||
end[-1] = '\0';
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
pos += ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cipher & WPA_CIPHER_TKIP) {
|
|
||||||
ret = os_snprintf(pos, end - pos, "%sTKIP",
|
|
||||||
pos == buf ? "" : " ");
|
|
||||||
if (ret < 0 || ret >= end - pos) {
|
|
||||||
end[-1] = '\0';
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
pos += ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cipher & WPA_CIPHER_WEP104) {
|
|
||||||
ret = os_snprintf(pos, end - pos, "%sWEP104",
|
|
||||||
pos == buf ? "" : " ");
|
|
||||||
if (ret < 0 || ret >= end - pos) {
|
|
||||||
end[-1] = '\0';
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
pos += ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cipher & WPA_CIPHER_WEP40) {
|
|
||||||
ret = os_snprintf(pos, end - pos, "%sWEP40",
|
|
||||||
pos == buf ? "" : " ");
|
|
||||||
if (ret < 0 || ret >= end - pos) {
|
|
||||||
end[-1] = '\0';
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
pos += ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cipher & WPA_CIPHER_NONE) {
|
|
||||||
ret = os_snprintf(pos, end - pos, "%sNONE",
|
|
||||||
pos == buf ? "" : " ");
|
|
||||||
if (ret < 0 || ret >= end - pos) {
|
|
||||||
end[-1] = '\0';
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
pos += ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
|
|
|
@ -1717,54 +1717,15 @@ static int wpa_supplicant_ctrl_iface_list_networks(
|
||||||
|
|
||||||
static char * wpa_supplicant_cipher_txt(char *pos, char *end, int cipher)
|
static char * wpa_supplicant_cipher_txt(char *pos, char *end, int cipher)
|
||||||
{
|
{
|
||||||
int first = 1, ret;
|
int ret;
|
||||||
ret = os_snprintf(pos, end - pos, "-");
|
ret = os_snprintf(pos, end - pos, "-");
|
||||||
if (ret < 0 || ret >= end - pos)
|
if (ret < 0 || ret >= end - pos)
|
||||||
return pos;
|
return pos;
|
||||||
pos += ret;
|
pos += ret;
|
||||||
if (cipher & WPA_CIPHER_NONE) {
|
ret = wpa_write_ciphers(pos, end, cipher, "+");
|
||||||
ret = os_snprintf(pos, end - pos, "%sNONE", first ? "" : "+");
|
if (ret < 0)
|
||||||
if (ret < 0 || ret >= end - pos)
|
return pos;
|
||||||
return pos;
|
pos += ret;
|
||||||
pos += ret;
|
|
||||||
first = 0;
|
|
||||||
}
|
|
||||||
if (cipher & WPA_CIPHER_WEP40) {
|
|
||||||
ret = os_snprintf(pos, end - pos, "%sWEP40", first ? "" : "+");
|
|
||||||
if (ret < 0 || ret >= end - pos)
|
|
||||||
return pos;
|
|
||||||
pos += ret;
|
|
||||||
first = 0;
|
|
||||||
}
|
|
||||||
if (cipher & WPA_CIPHER_WEP104) {
|
|
||||||
ret = os_snprintf(pos, end - pos, "%sWEP104",
|
|
||||||
first ? "" : "+");
|
|
||||||
if (ret < 0 || ret >= end - pos)
|
|
||||||
return pos;
|
|
||||||
pos += ret;
|
|
||||||
first = 0;
|
|
||||||
}
|
|
||||||
if (cipher & WPA_CIPHER_TKIP) {
|
|
||||||
ret = os_snprintf(pos, end - pos, "%sTKIP", first ? "" : "+");
|
|
||||||
if (ret < 0 || ret >= end - pos)
|
|
||||||
return pos;
|
|
||||||
pos += ret;
|
|
||||||
first = 0;
|
|
||||||
}
|
|
||||||
if (cipher & WPA_CIPHER_CCMP) {
|
|
||||||
ret = os_snprintf(pos, end - pos, "%sCCMP", first ? "" : "+");
|
|
||||||
if (ret < 0 || ret >= end - pos)
|
|
||||||
return pos;
|
|
||||||
pos += ret;
|
|
||||||
first = 0;
|
|
||||||
}
|
|
||||||
if (cipher & WPA_CIPHER_GCMP) {
|
|
||||||
ret = os_snprintf(pos, end - pos, "%sGCMP", first ? "" : "+");
|
|
||||||
if (ret < 0 || ret >= end - pos)
|
|
||||||
return pos;
|
|
||||||
pos += ret;
|
|
||||||
first = 0;
|
|
||||||
}
|
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue