aboutsummaryrefslogtreecommitdiff
path: root/cryptfs
diff options
context:
space:
mode:
Diffstat (limited to 'cryptfs')
-rw-r--r--cryptfs/cryptfs_content.go16
-rw-r--r--cryptfs/log.go1
2 files changed, 13 insertions, 4 deletions
diff --git a/cryptfs/cryptfs_content.go b/cryptfs/cryptfs_content.go
index b9dd61f..374b4f4 100644
--- a/cryptfs/cryptfs_content.go
+++ b/cryptfs/cryptfs_content.go
@@ -97,12 +97,20 @@ func (be *CryptFS) SplitRange(offset uint64, length uint64) []intraBlock {
// PlainSize - calculate plaintext size from ciphertext size
func (be *CryptFS) PlainSize(size uint64) uint64 {
+
// Zero sized files stay zero-sized
- if size > 0 {
- overhead := be.cipherBS - be.plainBS
- nBlocks := (size + be.cipherBS - 1) / be.cipherBS
- size -= nBlocks * overhead
+ if size == 0 {
+ return 0
+ }
+
+ overhead := be.cipherBS - be.plainBS
+ nBlocks := (size + be.cipherBS - 1) / be.cipherBS
+ if nBlocks * overhead > size {
+ Warn.Printf("PlainSize: Negative size, returning 0 instead\n")
+ return 0
}
+ size -= nBlocks * overhead
+
return size
}
diff --git a/cryptfs/log.go b/cryptfs/log.go
index 03d1e29..d40aa3f 100644
--- a/cryptfs/log.go
+++ b/cryptfs/log.go
@@ -26,4 +26,5 @@ func (l *logChannel) Enable() {
var Debug = logChannel{false}
+var Notice = logChannel{true}
var Warn = logChannel{true}