summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Hanselmann <public@hansmi.ch>2021-07-08 22:54:53 +0200
committerMichael Hanselmann <public@hansmi.ch>2021-07-08 23:18:14 +0200
commitab9696d6b79f2e77261fcee0467f357a2dab0251 (patch)
tree4fd2bb5eaf2a5f67f6f47992a4bedc13fe7b70ef
parent104eca8ff3360d332ed396abe531ea623d8f26f4 (diff)
usbredirparserfuzz: Continue writing until exhausted
Signed-off-by: Michael Hanselmann <public@hansmi.ch>
-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())) {