From: Alan T. DeKok Date: Fri, 1 Sep 2017 13:17:00 +0000 (-0400) Subject: clarify code. Helps with #2051 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=93d096d030d7a610c12f23605d83bcf256798650;p=thirdparty%2Ffreeradius-server.git clarify code. Helps with #2051 --- diff --git a/src/modules/rlm_rest/rest.c b/src/modules/rlm_rest/rest.c index 77171ae8d65..c74be124b06 100644 --- a/src/modules/rlm_rest/rest.c +++ b/src/modules/rlm_rest/rest.c @@ -1477,8 +1477,9 @@ static size_t rest_response_body(void *ptr, size_t size, size_t nmemb, void *use char const *p = ptr, *q; char *tmp; - + size_t const t = (size * nmemb); + size_t needed; if (t == 0) return 0; @@ -1513,8 +1514,11 @@ static size_t rest_response_body(void *ptr, size_t size, size_t nmemb, void *use return t; default: - if ((t + 1) > (ctx->alloc - ctx->used)) { - ctx->alloc += ((t + 1) > REST_BODY_INIT) ? t + 1 : REST_BODY_INIT; + needed = ctx->used + t + 1; + if (needed < REST_BODY_INIT) needed = REST_BODY_INIT; + + if (needed > ctx->alloc) { + ctx->alloc = needed; tmp = ctx->buffer; ctx->buffer = talloc_array(NULL, char, ctx->alloc);