summaryrefslogtreecommitdiff
path: root/fuzzing/usbredirparserfuzz.cc
diff options
context:
space:
mode:
Diffstat (limited to 'fuzzing/usbredirparserfuzz.cc')
-rw-r--r--fuzzing/usbredirparserfuzz.cc13
1 files changed, 8 insertions, 5 deletions
diff --git a/fuzzing/usbredirparserfuzz.cc b/fuzzing/usbredirparserfuzz.cc
index ec64336..792a454 100644
--- a/fuzzing/usbredirparserfuzz.cc
+++ b/fuzzing/usbredirparserfuzz.cc
@@ -426,11 +426,14 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
usbredirparser_init(parser.get(), "fuzzer", caps.data(), caps.size(),
init_flags);
- while (fdp->remaining_bytes() > 0) {
- ret = usbredirparser_do_read(parser.get());
- if (ret != 0) {
- log("usbredirparser_do_read failed: %d\n", ret);
- goto out;
+ while (fdp->remaining_bytes() > 0 ||
+ usbredirparser_has_data_to_write(parser.get())) {
+ if (fdp->remaining_bytes() > 0) {
+ ret = usbredirparser_do_read(parser.get());
+ if (ret != 0) {
+ log("usbredirparser_do_read failed: %d\n", ret);
+ goto out;
+ }
}
while (usbredirparser_has_data_to_write(parser.get())) {