diff options
Diffstat (limited to 'encoding/apr_base64.c')
-rw-r--r-- | encoding/apr_base64.c | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/encoding/apr_base64.c b/encoding/apr_base64.c index d8e54a4ae..448085843 100644 --- a/encoding/apr_base64.c +++ b/encoding/apr_base64.c @@ -20,14 +20,27 @@ * ugly 'len' functions, which is quite a nasty cost. */ -#undef NDEBUG /* always abort() on assert()ion failure */ -#include <assert.h> - #include "apr_base64.h" #if APR_CHARSET_EBCDIC #include "apr_xlate.h" #endif /* APR_CHARSET_EBCDIC */ +/* APR__ASSERT() to always abort() on failure (no output when NDEBUG) */ +#ifndef NDEBUG +#include <assert.h> +#define APR__ASSERT(cond) assert(cond) +#else +#include "apr.h" +#if APR_HAVE_STDLIB_H +#include <stdlib.h> +#endif +#define APR__ASSERT(cond) do { \ + if (!(cond)) { \ + abort(); \ + } \ +} while (0) +#endif + /* Above APR_BASE64_ENCODE_MAX length the encoding can't fit in an int >= 0 */ #define APR_BASE64_ENCODE_MAX 1610612733 @@ -124,7 +137,7 @@ APR_DECLARE(int) apr_base64_decode_len(const char *bufcoded) bufin = (const unsigned char *) bufcoded; while (pr2six[*(bufin++)] <= 63); nprbytes = (bufin - (const unsigned char *) bufcoded) - 1; - assert(nprbytes <= APR_BASE64_DECODE_MAX); + APR__ASSERT(nprbytes <= APR_BASE64_DECODE_MAX); return (int)(((nprbytes + 3u) / 4u) * 3u + 1u); } @@ -161,7 +174,7 @@ APR_DECLARE(int) apr_base64_decode_binary(unsigned char *bufplain, bufin = (const unsigned char *) bufcoded; while (pr2six[*(bufin++)] <= 63); nprbytes = (bufin - (const unsigned char *) bufcoded) - 1; - assert(nprbytes <= APR_BASE64_DECODE_MAX); + APR__ASSERT(nprbytes <= APR_BASE64_DECODE_MAX); nbytesdecoded = (int)(((nprbytes + 3u) / 4u) * 3u); bufout = (unsigned char *) bufplain; @@ -206,7 +219,7 @@ static const char basis_64[] = APR_DECLARE(int) apr_base64_encode_len(int len) { - assert(len >= 0 && len <= APR_BASE64_ENCODE_MAX); + APR__ASSERT(len >= 0 && len <= APR_BASE64_ENCODE_MAX); return ((len + 2) / 3 * 4) + 1; } @@ -219,7 +232,7 @@ APR_DECLARE(int) apr_base64_encode(char *encoded, const char *string, int len) int i; char *p; - assert(len >= 0 && len <= APR_BASE64_ENCODE_MAX); + APR__ASSERT(len >= 0 && len <= APR_BASE64_ENCODE_MAX); p = encoded; for (i = 0; i < len - 2; i += 3) { @@ -258,7 +271,7 @@ APR_DECLARE(int) apr_base64_encode_binary(char *encoded, int i; char *p; - assert(len >= 0 && len <= APR_BASE64_ENCODE_MAX); + APR__ASSERT(len >= 0 && len <= APR_BASE64_ENCODE_MAX); p = encoded; for (i = 0; i < len - 2; i += 3) { @@ -292,7 +305,7 @@ APR_DECLARE(char *) apr_pbase64_encode(apr_pool_t *p, const char *string) char *encoded; apr_size_t len = strlen(string); - assert(len <= (apr_size_t)APR_BASE64_ENCODE_MAX); + APR__ASSERT(len <= (apr_size_t)APR_BASE64_ENCODE_MAX); encoded = (char *) apr_palloc(p, apr_base64_encode_len((int)len)); apr_base64_encode(encoded, string, (int)len); |