aboutsummaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorJakob Unterwurzacher2019-01-20 12:13:49 +0100
committerJakob Unterwurzacher2019-01-20 12:13:49 +0100
commit8c09df03aa5eeb581befb7bb77a0af44b39dfd37 (patch)
tree8617e715beb8695248ccaac14b76cd6eb5ca756d /internal
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
Diffstat (limited to 'internal')
-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)]
}
}