aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Unterwurzacher2017-05-25 14:18:44 +0200
committerJakob Unterwurzacher2017-05-25 14:18:44 +0200
commitc0e411f81d01607fa59338365933232231738581 (patch)
tree2669ce4f9a5323119860e501c97eaf11f35f6e83
parent70c16fde4c908414f6af53c3193a89fa296ef732 (diff)
contentenc: better error reporting in ParseHeader
Log the message ourselves and return EINVAL. Before: gocryptfs[26962]: go-fuse: can't convert error type: ParseHeader: invalid version: got 0, want 2 After: gocryptfs[617]: ParseHeader: invalid version: want 2, got 0. Returning EINVAL.
-rw-r--r--internal/contentenc/file_header.go9
1 files changed, 6 insertions, 3 deletions
diff --git a/internal/contentenc/file_header.go b/internal/contentenc/file_header.go
index 5c05818..8a08ef0 100644
--- a/internal/contentenc/file_header.go
+++ b/internal/contentenc/file_header.go
@@ -6,10 +6,11 @@ package contentenc
import (
"encoding/binary"
- "fmt"
"log"
+ "syscall"
"github.com/rfjakob/gocryptfs/internal/cryptocore"
+ "github.com/rfjakob/gocryptfs/internal/tlog"
)
const (
@@ -43,12 +44,14 @@ func (h *FileHeader) Pack() []byte {
// ParseHeader - parse "buf" into fileHeader object
func ParseHeader(buf []byte) (*FileHeader, error) {
if len(buf) != HeaderLen {
- return nil, fmt.Errorf("ParseHeader: invalid length: got %d, want %d", len(buf), HeaderLen)
+ tlog.Warn.Printf("ParseHeader: invalid length: want %d bytes, got %d. Returning EINVAL.", HeaderLen, len(buf))
+ return nil, syscall.EINVAL
}
var h FileHeader
h.Version = binary.BigEndian.Uint16(buf[0:headerVersionLen])
if h.Version != CurrentVersion {
- return nil, fmt.Errorf("ParseHeader: invalid version: got %d, want %d", h.Version, CurrentVersion)
+ tlog.Warn.Printf("ParseHeader: invalid version: want %d, got %d. Returning EINVAL.", CurrentVersion, h.Version)
+ return nil, syscall.EINVAL
}
h.ID = buf[headerVersionLen:]
return &h, nil