| --- a/hostapd/config_file.c |
| +++ b/hostapd/config_file.c |
| @@ -4816,7 +4816,12 @@ struct hostapd_config * hostapd_config_r |
| int errors = 0; |
| size_t i; |
| |
| - f = fopen(fname, "r"); |
| + if (!strncmp(fname, "data:", 5)) { |
| + f = fmemopen((void *)(fname + 5), strlen(fname + 5), "r"); |
| + fname = "<inline>"; |
| + } else { |
| + f = fopen(fname, "r"); |
| + } |
| if (f == NULL) { |
| wpa_printf(MSG_ERROR, "Could not open configuration file '%s' " |
| "for reading.", fname); |
| --- a/wpa_supplicant/config_file.c |
| +++ b/wpa_supplicant/config_file.c |
| @@ -326,8 +326,13 @@ struct wpa_config * wpa_config_read(cons |
| while (cred_tail && cred_tail->next) |
| cred_tail = cred_tail->next; |
| |
| + if (!strncmp(name, "data:", 5)) { |
| + f = fmemopen((void *)(name + 5), strlen(name + 5), "r"); |
| + name = "<inline>"; |
| + } else { |
| + f = fopen(name, "r"); |
| + } |
| wpa_printf(MSG_DEBUG, "Reading configuration file '%s'", name); |
| - f = fopen(name, "r"); |
| if (f == NULL) { |
| wpa_printf(MSG_ERROR, "Failed to open config file '%s', " |
| "error: %s", name, strerror(errno)); |