Skip to content

Commit 0abfa60

Browse files
authored
Merge pull request #1570 from AdamKorcz/fuzz1
Add fuzzer to integrate go-redis into OSS-fuzz
2 parents f8cbf48 + 0d9368c commit 0abfa60

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

fuzz.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
// +build gofuzz
2+
3+
package redis
4+
5+
import (
6+
"context"
7+
"time"
8+
)
9+
10+
var (
11+
ctx = context.Background()
12+
rdb *Client
13+
)
14+
15+
func init() {
16+
rdb = NewClient(&Options{
17+
Addr: ":6379",
18+
DialTimeout: 10 * time.Second,
19+
ReadTimeout: 10 * time.Second,
20+
WriteTimeout: 10 * time.Second,
21+
PoolSize: 10,
22+
PoolTimeout: 10 * time.Second,
23+
})
24+
}
25+
26+
func Fuzz(data []byte) int {
27+
arrayLen := len(data)
28+
if arrayLen < 4 {
29+
return -1
30+
}
31+
maxIter := int(uint(data[0]))
32+
for i := 0; i < maxIter && i < arrayLen; i++ {
33+
n := i % arrayLen
34+
if n == 0 {
35+
_ = rdb.Set(ctx, string(data[i:]), string(data[i:]), 0).Err()
36+
} else if n == 1 {
37+
_, _ = rdb.Get(ctx, string(data[i:])).Result()
38+
} else if n == 2 {
39+
_, _ = rdb.Incr(ctx, string(data[i:])).Result()
40+
} else if n == 3 {
41+
var cursor uint64
42+
_, _, _ = rdb.Scan(ctx, cursor, string(data[i:]), 10).Result()
43+
}
44+
}
45+
return 1
46+
}

0 commit comments

Comments
 (0)