From 199d3fd79ff03222cf7498418b40e1263f8aa104 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Sat, 5 Sep 2015 19:07:20 +0200 Subject: Fix write path --- cryptfs/cryptfile.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'cryptfs/cryptfile.go') diff --git a/cryptfs/cryptfile.go b/cryptfs/cryptfile.go index 0cd11da..98b6d12 100644 --- a/cryptfs/cryptfile.go +++ b/cryptfs/cryptfile.go @@ -115,14 +115,26 @@ func (ib *intraBlock) IsPartial() bool { return false } -// ciphertextRange - get byte range in ciphertext file corresponding to BlockNo +// CiphertextRange - get byte range in ciphertext file corresponding to BlockNo +// (complete block) func (ib *intraBlock) CiphertextRange() (offset int64, length int64) { return ib.BlockNo * ib.fs.cipherBS, ib.fs.cipherBS } -// CropBlock - crop a full plaintext block down to the relevant part +// PlaintextRange - get byte range in plaintext corresponding to BlockNo +// (complete block) +func (ib *intraBlock) PlaintextRange() (offset int64, length int64) { + return ib.BlockNo * ib.fs.plainBS, ib.fs.plainBS +} + +// CropBlock - crop a potentially larger plaintext block down to the relevant part func (ib *intraBlock) CropBlock(d []byte) []byte{ - return d[ib.Offset:ib.Offset+ib.Length] + lenHave := len(d) + lenWant := int(ib.Offset+ib.Length) + if lenHave < lenWant { + return d[ib.Offset:lenHave] + } + return d[ib.Offset:lenWant] } // Split a plaintext byte range into (possible partial) blocks -- cgit v1.2.3