From: Rob Pike Date: Mon, 6 Jul 2009 17:58:55 +0000 (-0700) Subject: catch corruption - avoid crash X-Git-Tag: weekly.2009-11-06~1256 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=d3a2925bb28d387d57961654d817d155173c8d7d;p=gostls13.git catch corruption - avoid crash R=rsc DELTA=4 (4 added, 0 deleted, 0 changed) OCL=31192 CL=31198 --- diff --git a/src/pkg/gob/decode.go b/src/pkg/gob/decode.go index 80d772fd0d..89792dc046 100644 --- a/src/pkg/gob/decode.go +++ b/src/pkg/gob/decode.go @@ -295,6 +295,10 @@ func decodeStruct(engine *decEngine, rtyp reflect.StructType, r io.Reader, p uin basep := p; for state.err == nil { delta := int(DecodeUint(state)); + if delta < 0 { + state.err = os.ErrorString("gob decode: corrupted data: negative delta"); + break + } if state.err != nil || delta == 0 { // struct terminator is zero delta fieldnum break }