From 01cf82b2dff4f2ec201c1ddf869d3b534bde301a Mon Sep 17 00:00:00 2001 From: TLINDEN Date: Thu, 13 Feb 2014 20:19:32 +0100 Subject: [PATCH] fixed segfault when fatals_ifany() called multiple times --- include/pcp/defines.h | 4 +++- libpcp/fatal.c | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/pcp/defines.h b/include/pcp/defines.h index 834f2b0..57746a0 100644 --- a/include/pcp/defines.h +++ b/include/pcp/defines.h @@ -84,7 +84,6 @@ typedef unsigned int qbyte; /* Quad byte = 32 bits */ #define PCP_CRYPTO_ADD (crypto_box_ZEROBYTES - crypto_box_BOXZEROBYTES) #define PCP_BLOCK_SIZE_IN (PCP_BLOCK_SIZE) + PCP_CRYPTO_ADD + crypto_secretbox_NONCEBYTES #define PCP_ASYM_RECIPIENT_SIZE crypto_secretbox_KEYBYTES + PCP_CRYPTO_ADD + crypto_secretbox_NONCEBYTES -#define PCP_ASYM_RECIPIENT_RSIZE (PCP_ASYM_RECIPIENT_SIZE + 1) /* #define PCP_ASYM_ADD_SENDER_PUB */ @@ -107,4 +106,7 @@ void fatals_ifany(); /* reset */ void fatals_reset(); +/* free mem */ +void fatals_done(); + #endif /* _DEFINES_H */ diff --git a/libpcp/fatal.c b/libpcp/fatal.c index 4e66364..4f6b5e5 100644 --- a/libpcp/fatal.c +++ b/libpcp/fatal.c @@ -54,7 +54,10 @@ void fatals_ifany() { if(errno) { fprintf(stderr, "Error: %s\n", strerror(errno)); } - free(PCP_ERR); PCP_EXIT = 1; } } + +void fatals_done() { + free(PCP_ERR); +}