]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
clarify code. Helps with #2051
authorAlan T. DeKok <aland@freeradius.org>
Fri, 1 Sep 2017 13:17:00 +0000 (09:17 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 1 Sep 2017 13:17:00 +0000 (09:17 -0400)
src/modules/rlm_rest/rest.c

index 77171ae8d65671531bce58834f450bb51c208a9d..c74be124b067edffbc969005fe658dab18b4c809 100644 (file)
@@ -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);