projects
/
oweals
/
tinc.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
f542ef8
)
Do not use hardcoded cipher block length when padding.
author
Guus Sliepen
<guus@tinc-vpn.org>
Sat, 19 Dec 2009 22:23:25 +0000
(23:23 +0100)
committer
Guus Sliepen
<guus@tinc-vpn.org>
Sat, 19 Dec 2009 22:23:25 +0000
(23:23 +0100)
src/gcrypt/cipher.c
patch
|
blob
|
history
diff --git
a/src/gcrypt/cipher.c
b/src/gcrypt/cipher.c
index ad2a9505318475dcbd0fed871fc3df23d2219ee5..6a2cc5a1076a556675a5d471636d7983c60191da 100644
(file)
--- a/
src/gcrypt/cipher.c
+++ b/
src/gcrypt/cipher.c
@@
-196,7
+196,13
@@
bool cipher_encrypt(cipher_t *cipher, const void *indata, size_t inlen, void *ou
if(!oneshot)
return false;
- size_t reqlen = ((inlen + 8) / cipher->blklen) * cipher->blklen;
+ size_t reqlen = ((inlen + cipher->blklen) / cipher->blklen) * cipher->blklen;
+
+ if(*outlen < reqlen) {
+ logger(LOG_ERR, "Error while encrypting: not enough room for padding");
+ return false;
+ }
+
uint8_t padbyte = reqlen - inlen;
inlen = reqlen - cipher->blklen;
@@
-259,7
+265,8
@@
bool cipher_decrypt(cipher_t *cipher, const void *indata, size_t inlen, void *ou
}
*outlen = origlen;
- }
+ } else
+ *outlen = inlen;
return true;
}