diff --git a/inlcude/utils.h b/inlcude/utils.h index 90130e2..31265ba 100644 --- a/inlcude/utils.h +++ b/inlcude/utils.h @@ -5,7 +5,14 @@ #include #define OUT_OF_BOUNDS(base, pos, size) do {\ - if ((pos) - (base) + 1 > (size) )\ + void *__base__ = (base);\ + void *__pos__ = (pos);\ + if (__pos__ < __base__) {\ + fprintf(stderr, "%s:%d: Error: Out of bounds check with pos being lower then base.\n", __FILE__, __LINE__);\ + return 1;\ + }\ + size_t __diff__ = (size_t) (__pos__ - __base__);\ + if (__diff__ + 1 > (size) )\ {\ fprintf(stderr, "%s:%d: Error: Expected more characters, but found the end of the request.\n", __FILE__, __LINE__);\ return 1;\ @@ -142,7 +149,7 @@ /* - * ERRORS + * ERRORS * 1: str had a none digit character. * 2: str was null * 3: res was null diff --git a/src/http.c b/src/http.c index 794a895..eee7f91 100644 --- a/src/http.c +++ b/src/http.c @@ -336,8 +336,8 @@ int http_parse_response_1_1(HTTP_Transport *t, HTTP_Response *res) raw_res += 1; // consume '\n' while (1) { - - if(raw_res - base >= size - 1) { + size_t diff = (size_t) (raw_res - base); + if(diff >= size - 1) { fprintf(stderr, "%s:%d: Unexpected end of HTTP response.\n", __FILE__, __LINE__); return 1; } @@ -398,7 +398,7 @@ int http_recv_header_1_1(HTTP_Transport *t, HTTP_Response *res) if (r_count <= 0) return -1; size_t old_size = raw_res->size; - da_memcpy(raw_res, buffer, r_count); + da_memcpy(raw_res, buffer, (size_t)r_count); if (old_size >= 3) search_index = old_size - 3; else @@ -472,6 +472,7 @@ int http_transport_init(HTTP_Transport *t, HTTP_T_Kind kind) int http_transport_free(HTTP_Transport *t) { + (void)t; fprintf(stderr, "%s:%d: Not Implemented: int http_transport_free(HTTP_Transport *t)\n", __FILE__, __LINE__); return 1; } @@ -642,7 +643,7 @@ int http_request( // Check for 'Host' Header and if not present, inject it with url host int has_host = 0; - for (int i = 0 ; i < headers->size ; i++) { + for (size_t i = 0 ; i < headers->size ; i++) { if(cmpstrcasei(headers->data[i].key, "Host") == 0) { has_host = 1; break;