From ae5be4418288310569bee925ea09a6db1b167b5b Mon Sep 17 00:00:00 2001 From: TLINDEN Date: Wed, 14 Oct 2015 19:53:03 +0200 Subject: [PATCH] fixed _gen_ctr_nonce(), reported in #12: invalid ctr comparision did lead to counter underflow --- libpcp/crypto.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libpcp/crypto.c b/libpcp/crypto.c index 40aa8fa..3a13672 100644 --- a/libpcp/crypto.c +++ b/libpcp/crypto.c @@ -707,7 +707,9 @@ uint64_t _get_nonce_ctr(byte *nonce) { fprintf(stderr, "invalid counter size %d!", i); abort(); } - + + fprintf(stderr, "ctr size: %d ", i); + switch(i) { case 1: ctr = nonce[1]; @@ -796,12 +798,12 @@ byte *_gen_ctr_nonce(uint64_t ctr) { m64 = htobe64(ctr); memcpy(&nonce[1], &m64, 8); } - else if(ctr < m32 && ctr > m16) { + else if(ctr <= m32 && ctr > m16) { i = 4; m32 = htobe32(ctr); memcpy(&nonce[1], &m32, 4); } - else if(ctr < m16 && ctr > m8) { + else if(ctr <= m16 && ctr > m8) { i = 2; m16 = htobe16(ctr); memcpy(&nonce[1], &m16, 2);