File tree Expand file tree Collapse file tree 2 files changed +15
-0
lines changed Expand file tree Collapse file tree 2 files changed +15
-0
lines changed Original file line number Diff line number Diff line change @@ -120,7 +120,12 @@ func (m *Message) UnmarshalBinary(b []byte) error {
120
120
return errUnalignedMessage
121
121
}
122
122
123
+ // Don't allow misleading length
123
124
m .Header .Length = Uint32 (b [0 :4 ])
125
+ if int (m .Header .Length ) != len (b ) {
126
+ return errShortMessage
127
+ }
128
+
124
129
m .Header .Type = HeaderType (Uint16 (b [4 :6 ]))
125
130
m .Header .Flags = HeaderFlags (Uint16 (b [6 :8 ]))
126
131
m .Header .Sequence = Uint32 (b [8 :12 ])
Original file line number Diff line number Diff line change @@ -134,6 +134,16 @@ func TestMessageUnmarshal(t *testing.T) {
134
134
b : make ([]byte , 17 ),
135
135
err : errUnalignedMessage ,
136
136
},
137
+ {
138
+ name : "fuzz crasher: length shorter than slice" ,
139
+ b : []byte ("\x1d 000000000000000" ),
140
+ err : errShortMessage ,
141
+ },
142
+ {
143
+ name : "fuzz crasher: length longer than slice" ,
144
+ b : []byte ("\x13 \x00 \x00 \x00 0000000000000000" ),
145
+ err : errShortMessage ,
146
+ },
137
147
{
138
148
name : "OK no data" ,
139
149
b : []byte {
You can’t perform that action at this time.
0 commit comments