Commit 849a1f10c9 was checked in inappropriately; review flagged up that clearerr() was too big a hammer, as it would clear both the EOF flag and stream errors.
Stream errors shouldn't be cleared; we only want the EOF and other stream-related state reset. To do this, it is sufficient to fseek() to zero. Signed-off-by: George Dunlap <george.dun...@citrix.com> Acked-by: Andrew Cooper <andrew.coop...@citrix.com> --- This is a candidate for backport to 4.9 (probably merged with 849a1f10c9). CC: Ian Jackson <ian.jack...@citrix.com> CC: Wei Liu <wei.l...@citrix.com> CC: Andrew Cooper <andrew.coop...@citrix.com> CC: Jan Beulich <jbeul...@suse.com> --- tools/fuzz/x86_instruction_emulator/afl-harness.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tools/fuzz/x86_instruction_emulator/afl-harness.c b/tools/fuzz/x86_instruction_emulator/afl-harness.c index b4d15451b5..31ae1daef1 100644 --- a/tools/fuzz/x86_instruction_emulator/afl-harness.c +++ b/tools/fuzz/x86_instruction_emulator/afl-harness.c @@ -77,6 +77,17 @@ int main(int argc, char **argv) exit(-1); } } +#ifdef __AFL_HAVE_MANUAL_CONTROL + else + { + /* + * This will ensure we're dealing with a clean stream + * state after the afl-fuzz process messes with the open + * file handle. + */ + fseek(fp, 0, SEEK_SET); + } +#endif size = fread(input, 1, INPUT_SIZE, fp); @@ -97,8 +108,6 @@ int main(int argc, char **argv) fclose(fp); fp = NULL; } - else - clearerr(fp); LLVMFuzzerTestOneInput(input, size); } -- 2.14.2 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel