mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2025-02-26 13:49:35 -05:00
Remove newlines from wpa_supplicant config network output
Spurious newlines output while writing the config file can corrupt the wpa_supplicant configuration. Avoid writing these for the network block parameters. This is a generic filter that cover cases that may not have been explicitly addressed with a more specific commit to avoid control characters in the psk parameter. Signed-off-by: Paul Stewart <pstew@google.com>
This commit is contained in:
parent
5594df44c7
commit
0fe5a23424
@ -709,6 +709,17 @@ int has_ctrl_char(const u8 *data, size_t len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int has_newline(const char *str)
|
||||||
|
{
|
||||||
|
while (*str) {
|
||||||
|
if (*str == '\n' || *str == '\r')
|
||||||
|
return 1;
|
||||||
|
str++;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
size_t merge_byte_arrays(u8 *res, size_t res_len,
|
size_t merge_byte_arrays(u8 *res, size_t res_len,
|
||||||
const u8 *src1, size_t src1_len,
|
const u8 *src1, size_t src1_len,
|
||||||
const u8 *src2, size_t src2_len)
|
const u8 *src2, size_t src2_len)
|
||||||
|
@ -489,6 +489,7 @@ const char * wpa_ssid_txt(const u8 *ssid, size_t ssid_len);
|
|||||||
char * wpa_config_parse_string(const char *value, size_t *len);
|
char * wpa_config_parse_string(const char *value, size_t *len);
|
||||||
int is_hex(const u8 *data, size_t len);
|
int is_hex(const u8 *data, size_t len);
|
||||||
int has_ctrl_char(const u8 *data, size_t len);
|
int has_ctrl_char(const u8 *data, size_t len);
|
||||||
|
int has_newline(const char *str);
|
||||||
size_t merge_byte_arrays(u8 *res, size_t res_len,
|
size_t merge_byte_arrays(u8 *res, size_t res_len,
|
||||||
const u8 *src1, size_t src1_len,
|
const u8 *src1, size_t src1_len,
|
||||||
const u8 *src2, size_t src2_len);
|
const u8 *src2, size_t src2_len);
|
||||||
|
@ -2699,8 +2699,19 @@ char * wpa_config_get(struct wpa_ssid *ssid, const char *var)
|
|||||||
|
|
||||||
for (i = 0; i < NUM_SSID_FIELDS; i++) {
|
for (i = 0; i < NUM_SSID_FIELDS; i++) {
|
||||||
const struct parse_data *field = &ssid_fields[i];
|
const struct parse_data *field = &ssid_fields[i];
|
||||||
if (os_strcmp(var, field->name) == 0)
|
if (os_strcmp(var, field->name) == 0) {
|
||||||
return field->writer(field, ssid);
|
char *ret = field->writer(field, ssid);
|
||||||
|
|
||||||
|
if (ret && has_newline(ret)) {
|
||||||
|
wpa_printf(MSG_ERROR,
|
||||||
|
"Found newline in value for %s; not returning it",
|
||||||
|
var);
|
||||||
|
os_free(ret);
|
||||||
|
ret = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user