aboutsummaryrefslogtreecommitdiff
path: root/go/storage
diff options
context:
space:
mode:
Diffstat (limited to 'go/storage')
-rw-r--r--go/storage/needle_read_write.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/go/storage/needle_read_write.go b/go/storage/needle_read_write.go
index 6925c04e0..24a2c45ed 100644
--- a/go/storage/needle_read_write.go
+++ b/go/storage/needle_read_write.go
@@ -76,6 +76,8 @@ func (n *Needle) Append(w io.Writer, version Version) (size uint32, err error) {
if n.HasTtl() {
n.Size = n.Size + TtlBytesLength
}
+ } else {
+ n.Size = 0
}
size = n.DataSize
util.Uint32toBytes(header[12:16], n.Size)
@@ -185,6 +187,11 @@ func (n *Needle) readNeedleDataVersion2(bytes []byte) {
if index < lenBytes {
n.DataSize = util.BytesToUint32(bytes[index : index+4])
index = index + 4
+ if int(n.DataSize)+index > lenBytes {
+ // this if clause is due to bug #87 and #93, fixed in v0.69
+ // remove this clause later
+ return
+ }
n.Data = bytes[index : index+int(n.DataSize)]
index = index + int(n.DataSize)
n.Flags = bytes[index]