check type assertion
`v.([]byte)` coming from a datastore can panic. `byt, ok := v.([]byte)` to be safe. @whyrusleeping
Juan Batiz-Benet committed
Sep 16, 2014 at 02:26 UTC
520640840f938256c8f213131d84dc9de3183d48
1 file changed
+6
-1
routing/dht/dht.go
+6
-1
@@ -280,7 +280,12 @@ func (dht *IpfsDHT) getLocal(key u.Key) ([]byte, error) {
280
if err != nil {
281
return nil, err
282
}
283
- return v.([]byte), nil
283
+
284
+ byt, ok := v.([]byte)
285
+ if !ok {
286
+ return byt, errors.New("value stored in datastore not []byte")
287
+ }
288
+ return byt, nil
289
}
290
291
func (dht *IpfsDHT) putLocal(key u.Key, value []byte) error {