- while ( (ret = fread(buf, 1, sizeof(buf), fp)) > 0)
- func(buf, ret);
- pclose(fp);
+ if (fp) {
+ while ( (ret = fread(buf, 1, sizeof(buf), fp)) > 0)
+ func(buf, ret);
+ pclose(fp);
+ } else if (!got_dev_urandom) {
+ fprintf(stderr, "popen: %s\n"
+ "Unable to access fallback entropy source\n", strerror(errno));
+ exit(1);
+ }