]> Cypherpunks repositories - gostls13.git/commitdiff
catch corruption - avoid crash
authorRob Pike <r@golang.org>
Mon, 6 Jul 2009 17:58:55 +0000 (10:58 -0700)
committerRob Pike <r@golang.org>
Mon, 6 Jul 2009 17:58:55 +0000 (10:58 -0700)
R=rsc
DELTA=4  (4 added, 0 deleted, 0 changed)
OCL=31192
CL=31198

src/pkg/gob/decode.go

index 80d772fd0d53fbc52cbee4191033c7a1c90faf7d..89792dc0462f1748fdfee868d5b5c4a59b37499c 100644 (file)
@@ -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
                }