Azure IoT common library
Fork of azure_c_shared_utility by
Diff: httpapi_compact.c
- Revision:
- 18:6d8a413a4d9a
- Parent:
- 15:956c6d205aa7
- Child:
- 19:2e0811512ceb
--- a/httpapi_compact.c Sun Jan 08 11:12:54 2017 -0800 +++ b/httpapi_compact.c Fri Jan 13 18:41:15 2017 -0800 @@ -60,8 +60,8 @@ { int result; char* next; - (*dst) = strtol(src, &next, 0); - if ((src == next) || ((((*dst) == LONG_MAX) || ((*dst) == LONG_MIN)) && (errno != 0))) + long num = strtol(src, &next, 0); + if (src == next || num < INT_MIN || num > INT_MAX) { result = EOF; } @@ -69,6 +69,9 @@ { result = 1; } + if (num < INT_MIN) num = INT_MIN; + if (num > INT_MAX) num = INT_MAX; + *dst = (int)num; return result; } @@ -366,24 +369,23 @@ { int result; - if ((s1 == NULL) || (s2 == NULL)) - { - result = -1; - } + if (s1 == NULL) result = -1; + else if (s2 == NULL) result = 1; else { result = 0; - while (((n--) >= 0) && ((*s1) != '\0') && ((*s2) != '\0') && (result == 0)) + + while(n-- && result == 0) { - /* compute the difference between the chars */ - result = TOLOWER(*s1) - TOLOWER(*s2); - s1++; - s2++; - } + if (*s1 == 0) result = -1; + else if (*s2 == 0) result = 1; + else + { - if ((*s2) != '\0') - { - result = -1; + result = TOLOWER(*s1) - TOLOWER(*s2); + ++s1; + ++s2; + } } } @@ -506,7 +508,7 @@ { int resultLineSize; - if ((http_instance == NULL) || (buf == NULL) || (maxBufSize < 0)) + if ((http_instance == NULL) || (buf == NULL) || (maxBufSize == 0)) { LogError("%s", ((http_instance == NULL) ? "Invalid HTTP instance" : "Invalid HTTP buffer")); resultLineSize = -1; @@ -932,12 +934,12 @@ const char* substr; char* whereIsColon; int lengthInMsg; - const char* ContentLength = "content-length:"; - const int ContentLengthSize = 16; - const char* TransferEncoding = "transfer-encoding:"; - const int TransferEncodingSize = 19; - const char* Chunked = "chunked"; - const int ChunkedSize = 8; + const char ContentLength[] = "content-length:"; + const size_t ContentLengthSize = sizeof(ContentLength) - 1; + const char TransferEncoding[] = "transfer-encoding:"; + const size_t TransferEncodingSize = sizeof(TransferEncoding) - 1; + const char Chunked[] = "chunked"; + const size_t ChunkedSize = sizeof(Chunked) - 1; http_instance->is_io_error = 0; @@ -957,7 +959,7 @@ { if (InternStrnicmp(buf, ContentLength, ContentLengthSize) == 0) { - substr = buf + ContentLengthSize - 1; + substr = buf + ContentLengthSize; if (ParseStringToDecimal(substr, &lengthInMsg) != 1) { /*Codes_SRS_HTTPAPI_COMPACT_21_032: [ If the HTTPAPI_ExecuteRequest cannot read the message with the request result, it shall return HTTPAPI_READ_DATA_FAILED. ]*/ @@ -970,7 +972,7 @@ } else if (InternStrnicmp(buf, TransferEncoding, TransferEncodingSize) == 0) { - substr = buf + TransferEncodingSize - 1; + substr = buf + TransferEncodingSize; while (isspace(*substr)) substr++;