summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Hanselmann <public@hansmi.ch>2021-08-10 22:59:27 +0200
committerMichael Hanselmann <public@hansmi.ch>2021-08-13 23:23:44 +0200
commit2068333bcad03a29e84bd509601ef2b6c46c7e4a (patch)
tree1f05acaea9651f5f7b456b23c91286845b7b4c15
parentd76f55afc59243b98e069e51ccd48770998423a8 (diff)
usbredirparserfuzz: Simulate short reads and writes
Signed-off-by: Michael Hanselmann <public@hansmi.ch>
-rw-r--r--fuzzing/usbredirparserfuzz.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/fuzzing/usbredirparserfuzz.cc b/fuzzing/usbredirparserfuzz.cc
index 78073f3..5fa4244 100644
--- a/fuzzing/usbredirparserfuzz.cc
+++ b/fuzzing/usbredirparserfuzz.cc
@@ -49,11 +49,17 @@ void parser_log(void *priv, int level, const char *msg)
int parser_read(void *priv, uint8_t *data, int count)
{
+ // Simulate short reads
+ count = std::min(count, fdp->ConsumeIntegralInRange(1, 4 * count));
+
return fdp->ConsumeData(data, count);
}
int parser_write(void *priv, uint8_t *data, int count)
{
+ // Simulate short writes
+ count = std::min(count, fdp->ConsumeIntegralInRange(1, 4 * count));
+
// Read over complete source buffer to detect buffer overflows on write
void *buf = malloc(count);
memcpy(buf, data, count);