Skip to content

Commit

Permalink
added fuzz function and corpus; fixed exposed bugs
Browse files Browse the repository at this point in the history
  • Loading branch information
jmank88 committed Jan 27, 2018
1 parent 5a41ea2 commit 32dc0ab
Show file tree
Hide file tree
Showing 744 changed files with 1,331 additions and 7 deletions.
27 changes: 27 additions & 0 deletions fuzz.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// +build gofuzz

package jsonseq

import "bytes"

/*
Fuzzing function for github.com/dvyukov/go-fuzz.
Generate jsonseq-fuzz.zip:
go generate -tags gofuzz
Fuzz:
go-fuzz -bin=jsonseq-fuzz.zip -workdir=testdata
*/

//go:generate go-fuzz-build github.com/jmank88/jsonseq

func Fuzz(data []byte) int {
var i interface{}
if NewDecoder(bytes.NewReader(data)).Decode(&i) != nil {
return 0
}
return 1
}
17 changes: 10 additions & 7 deletions jsonseq.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,41 +152,44 @@ func RecordValue(b []byte) ([]byte, bool) {
}
// Drop rs and leading whitespace.
b = bytes.TrimLeftFunc(b[1:], wsRune)

if len(b) == 0 {
// Empty record.
return b, true
}
// A number, true, false, or null value could be truncated if not
// followed by whitespace.
switch b[0] {
case 'n':
if bytes.HasPrefix(b, []byte("null")) {
if wsByte(b[4]) {
if len(b) > 4 && wsByte(b[4]) {
return b, true
}
return b, false
}
case 't':
if bytes.HasPrefix(b, []byte("true")) {
if wsByte(b[4]) {
if len(b) > 4 && wsByte(b[4]) {
return b, true
}
return b, false
}
case 'f':
if bytes.HasPrefix(b, []byte("false")) {
if wsByte(b[5]) {
if len(b) > 5 && wsByte(b[5]) {
return b, true
}
return b, false
}
case '-':
if '0' <= b[1] && b[1] <= '9' {
t := bytes.TrimLeft(b, digitSet)
if len(b) > 1 && '0' <= b[1] && b[1] <= '9' {
t := bytes.TrimLeft(b[2:], digitSet)
if len(t) > 0 && wsByte(t[0]) {
return b, true
}
return b, false
}
case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
t := bytes.TrimLeft(b, digitSet)
t := bytes.TrimLeft(b[1:], digitSet)
if len(t) > 0 && wsByte(t[0]) {
return b, true
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ٱ￷̷ʶʀٷ̷ʷʀٷʱ׷̷ʷʀٱʱ׷̷ʷʀٱʷ׷
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
truee
1 change: 1 addition & 0 deletions testdata/corpus/02e63b612695d16ea943873916c88b800f86970e
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"�@a03c5fC7eAFE6d5fE8ccBe9D101020x0Ac6bccADFcb2EfA3A8e9bfF50D8Ba8B4CD"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"\udAfd\udddd\udAfd\udddd\udAfd\ueAeE\udAfd\ueAfd\udAfd\ueAfd\udAfd\ueAeE"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[5E335,3E335,3E333]
1 change: 1 addition & 0 deletions testdata/corpus/037267685dd627ca1c84e0f71be87bbe1a5d4156-3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[9E551830392260147083398201947135194]
1 change: 1 addition & 0 deletions testdata/corpus/037bd0dde7534e34d2e792f96dd48ab4ead38e0b-6
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
̷����׷ʀ
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[5E83,5E83,5E83,5E83,8E48]
1 change: 1 addition & 0 deletions testdata/corpus/03b50bc6709a0df881f34be3598917b44e909747-7
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
736071020�
1 change: 1 addition & 0 deletions testdata/corpus/03f41ed4442b7dd2e204723e1757e389024c0b4f-8
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
 
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"\n"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
𝝒𒒒𝒒𝒒𒒒𝒒𒒒𝒒𒒒𝒒𒒒𝒒𝝒
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"�����������������"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[[[@
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"\r\r\r"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
nu
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
���
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[3.2,2.2]
1 change: 1 addition & 0 deletions testdata/corpus/0a164a5d187a0e05237a203353db8eadfcb65e8b-5
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"\uAAFE\uCAFE\uC2FE\uC2FE\uC2eE\uC2eE"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"ʷʀٷ̷ʷʷ̷ٱ̷ʶʀٷ̷ʷʀٷʱ̷ʷʀٱʱ̷ʵʀٱʷ̷ʷʷ̷ʶʀʀٱ̷ʶʀٷ̷ʷʀٷʱ̷ʷʀٱʱ̷ʷʷʀٱʷ̷ʷʷ̷ʶʀٷ̷ʷʀ"
1 change: 1 addition & 0 deletions testdata/corpus/0a823f39920935036d6197789f1d7b02f61223e1-3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
["","","","","",""]
1 change: 1 addition & 0 deletions testdata/corpus/0ae7acf4482a39cf01baac6d847cd681df6e5336-2
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[6439858303922601477,6439858303922601477,69222324252627820,64398583039226012]
1 change: 1 addition & 0 deletions testdata/corpus/0b000dbedeec6e500a9fa717e6aa37b37fd20d12-3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions testdata/corpus/0b33f8bf5a91c304f920583f0016777bfbd214b4-4
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
�髤���
1 change: 1 addition & 0 deletions testdata/corpus/0b4a9b10018476d423a486f398757ff34f8e81d8-8
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<
1 change: 1 addition & 0 deletions testdata/corpus/0ba6e71d37371b61eab6e3a0c65732d1242ed65e
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[5E48,5E48,5E48,5E48,5E48]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[6.0,0.0,0.3,0.0,0.0,0.0]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[5E83,5E83,5E8383,5E83,5E83,5E83,8E48,5E83,8E48]
1 change: 1 addition & 0 deletions testdata/corpus/0c1f03a7341baaac5f2dbb31d5e016e9a2730be6
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
05233563155512506437705130522406334372476e
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[9339823398339851171117198643985518303922601470807,12223242526278207]
1 change: 1 addition & 0 deletions testdata/corpus/0cd7044aecd21ce2375ff0afbf47067626b70601-2
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[3.3]
1 change: 1 addition & 0 deletions testdata/corpus/0cfc0bd50984c0db91cf1b8431f5e0f9ecfad9b3-4
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions testdata/corpus/0d05bf59ca7ab1b7d14d0b263de74a001411fe79-5
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
5985502953180392260147909494701772928237915039062508
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[5E83,5E83,5E83,5E83,5E83,8E48,5E83,5E83,5E83,5E83,5E83,3E83,5E83,5E83,5E83,5E83,5E83,5E83,3E83,5E83,5E85,5E83,5E83,8E43,5E83,8E48,5E83,5E83,5E83,5E83,3E83,5E83,5E85,5E835,5E83,5E83,8E48,5E83,5E83,8E48]
1 change: 1 addition & 0 deletions testdata/corpus/0dde3c272bc46dce54d59cec400339e9c7884c8a-6
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"\uDfCfd\udACfd\udfCfd\udfCfd\udACfd\udAeE"
1 change: 1 addition & 0 deletions testdata/corpus/0de7bb1c228f26386869b9afee35f7fa27cc5133-5
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
�
1 change: 1 addition & 0 deletions testdata/corpus/0e29028d3a7f3da55d1c3dd773b70530656638ec-6
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"\ufffd\ufffd\u7efd\ueffd\u7ffd\ueffd\u7ffd\u7ee0\ueffd\u7ffd\u7ee0"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"򻢢򢻢򻢢򢿽򻢢򻢢򢿽򻢢򻢢򢿽򻢢򢿽򢿽򢿽򢿽򻢢򢿽򻢢򢿽򢿽򢿽򢿽򢿽򢿽򢿽򻢢򢿽򻢢򢿽򢿽򢿽򢿽򢿽򢢿"
1 change: 1 addition & 0 deletions testdata/corpus/0e610c319bfd6aabe50cc0567eb3a0229c95563c-3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
["�","�"]
1 change: 1 addition & 0 deletions testdata/corpus/0e9fa436a2da71771543a4726f7627a71036f01a-5
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Expand Down
1 change: 1 addition & 0 deletions testdata/corpus/0eb2e2afbdc83dabe51a951d3422d483fd1d3121-8
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"6�c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[0.000005E800]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"":
1 change: 1 addition & 0 deletions testdata/corpus/103d587596ec4965081581b4f8827dfff4ad7fc3-8
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[22601470833983398201,20212223242526278201,20212223242526272829]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"򻢢"
1 change: 1 addition & 0 deletions testdata/corpus/106c9e1265a75f2cd6577461b2fce9696b707012-4
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[
1 change: 1 addition & 0 deletions testdata/corpus/10824296c819b618125d1f54777d162b69caa3c2-4
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"\u
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"\r\r\r\r\r"
1 change: 1 addition & 0 deletions testdata/corpus/109450e6648437d42e34e0cef064314c01e8ffda-9
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
��������
1 change: 1 addition & 0 deletions testdata/corpus/10e87d274d7fc1cc42217a334a40d61d78a00efa-6
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
̷ʷʀٷʀ
1 change: 1 addition & 0 deletions testdata/corpus/10f5a7a2beb7f5505176708b7d5291726fcf7a1b-9
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"6�"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[-7E7,-481,-7E7,-688]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"ʷʀٷʱ׷̷ٷɌ"
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[3,6,3,6,6,2,2,2,8]
1 change: 1 addition & 0 deletions testdata/corpus/12d465785757ebfbc13fa048c9900b58958d20bf-5
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
["�","�","�","�"]
1 change: 1 addition & 0 deletions testdata/corpus/137e39cc038ba52e2a3242e9e7795c6087512b02-5
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[3,6,3,6,6,6,3]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"\n\n\n\n\n\n\n\n\n"
1 change: 1 addition & 0 deletions testdata/corpus/1380ec2827fb147ec5bc144eca3caac3d8d15ab1-5
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
̷ʷʀ
1 change: 1 addition & 0 deletions testdata/corpus/1382deb12aa8aa7b4efa64aa044e07c98c56b701-4
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[-0]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"������"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"��������������������"
1 change: 1 addition & 0 deletions testdata/corpus/157f5ab72e1d1ea1b4e68954ef7383581b382e49-3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
["","","","",""]
1 change: 1 addition & 0 deletions testdata/corpus/15b0cd9308179143f576f3d3e158cda8e2f766ac-8
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
n
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
󢻢򻢢򢿽򻢢򢿽򢿽򢿽򢿽򻢢򢿽򻢢򢿽򢿽򢿽򢿽򢿽򢢿
68 changes: 68 additions & 0 deletions testdata/corpus/16994596a8f7417c829d46725cd1f94757b8afa7-9
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@




































































Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"\f"
1 change: 1 addition & 0 deletions testdata/corpus/17177488454c74116b2b1cc65c59de4727b09e39-8
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[-7,-7,-7,-7,-7,-6]
1 change: 1 addition & 0 deletions testdata/corpus/1763eb33d33eb265d6cb256857543021618761ad-9
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
null
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
 3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[21470833983398201,22270833983398201,22623242526278201,20270833983398201,12223242526272829]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[5E83,5E83,5E83,5E83,5E83,8E48,5E83,5E83,5E83,5E833,5E83,5E83,5E83,5E83,5E83,8E48,5E83,5E83,8E48,5E83,8E48]
1 change: 1 addition & 0 deletions testdata/corpus/187da77170fcb86c5bb858583bcce895036ab7e7-6
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
763�
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"":9,"":9,"":9,"":9,"":9,"":9,"":9,"":9}
1 change: 1 addition & 0 deletions testdata/corpus/18d49b17d1849b8fd941caea50d259d4b3356826-3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[6E-340]
1 change: 1 addition & 0 deletions testdata/corpus/19672cca7e2c8d9118875958f60df80903b26e29-3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[[[[[3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[8E805,3E40805,3E405,3E921,3E39707,5E405,3E921,3E39707,5E405,3E48207]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"ʷʀٱʷ̷ʷʷ̷ʶʀʀٱ̷ʶʀٷ̷ʷʀٷʱ̷ʷʀٱʱ̷ʷʀٱʷ̷ʷ�"
1 change: 1 addition & 0 deletions testdata/corpus/19d4e30441c0e3525ffbf04d36285530f2415630-6
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
�������{
1 change: 1 addition & 0 deletions testdata/corpus/1a027db707f8e35dbe9079ff0b121da04e20828e-2
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-8
Loading

0 comments on commit 32dc0ab

Please sign in to comment.