summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Unterwurzacher2019-01-20 12:13:49 +0100
committerJakob Unterwurzacher2019-01-20 12:13:49 +0100
commit8c09df03aa5eeb581befb7bb77a0af44b39dfd37 (patch)
tree8617e715beb8695248ccaac14b76cd6eb5ca756d
parent452b8b00f426c9e745fcdeb3677147d492406f6f (diff)
ctlsock: fix buffer truncation of JSON unmarshal error
In the error case, buf was not restored to the original capacity. Instead of truncating "buf" and restoring (or forgetting to restore) later, introduce the "data" slice. Fixes https://github.com/rfjakob/gocryptfs/issues/356
-rw-r--r--internal/ctlsock/ctlsock_serve.go6
1 files changed, 2 insertions, 4 deletions
diff --git a/internal/ctlsock/ctlsock_serve.go b/internal/ctlsock/ctlsock_serve.go
index 4b02948..8b19e8a 100644
--- a/internal/ctlsock/ctlsock_serve.go
+++ b/internal/ctlsock/ctlsock_serve.go
@@ -96,9 +96,9 @@ func (ch *ctlSockHandler) handleConnection(conn *net.UnixConn) {
conn.Close()
return
}
- buf = buf[:n]
+ data := buf[:n]
var in RequestStruct
- err = json.Unmarshal(buf, &in)
+ err = json.Unmarshal(data, &in)
if err != nil {
tlog.Warn.Printf("ctlsock: JSON Unmarshal error: %#v", err)
err = errors.New("JSON Unmarshal error: " + err.Error())
@@ -106,8 +106,6 @@ func (ch *ctlSockHandler) handleConnection(conn *net.UnixConn) {
continue
}
ch.handleRequest(&in, conn)
- // Restore original size.
- buf = buf[:cap(buf)]
}
}