static int eap_fast_write_pac(struct eap_sm *sm, const char *pac_file,
char *buf, size_t len)
{
+ int ret = 0;
+
if (os_strncmp(pac_file, "blob://", 7) == 0) {
struct wpa_config_blob *blob;
blob = os_zalloc(sizeof(*blob));
"file '%s' for writing", pac_file);
return -1;
}
- fwrite(buf, 1, len, f);
+ if (fwrite(buf, 1, len, f) != len) {
+ wpa_printf(MSG_INFO, "EAP-FAST: Failed to write all "
+ "PACs into '%s'", pac_file);
+ ret = -1;
+ }
os_free(buf);
fclose(f);
}
- return 0;
+ return ret;
}
return NULL;
}
- fread(buf, 1, *len, f);
+ if (fread(buf, 1, *len, f) != *len) {
+ fclose(f);
+ free(buf);
+ return NULL;
+ }
+
fclose(f);
return buf;