mqtt: eliminate size_t cast
No binary (build failed)
—
(log yok)
| @@ -317,6 +317,22 @@ bool curlx_sztouz(ssize_t sznum, size_t *puznum) | |
| return TRUE; | |
| } | |
| + | bool curlx_sotouz_fits(curl_off_t sonum, size_t *puznum) |
| + | { |
| + | if(sonum < 0) { |
| + | *puznum = 0; |
| + | return FALSE; |
| + | } |
| + | #if SIZEOF_CURL_OFF_T > SIZEOF_SIZE_T |
| + | if(sonum > SIZE_MAX) { |
| + | *puznum = 0; |
| + | return FALSE; |
| + | } |
| + | #endif |
| + | *puznum = (size_t)sonum; |
| + | return TRUE; |
| + | } |
| + | |
| curl_off_t curlx_uztoso(size_t uznum) | |
| { | |
| #if SIZEOF_SIZE_T >= SIZEOF_CURL_OFF_T | |
| @@ -69,6 +69,10 @@ curl_off_t curlx_uztoso(size_t uznum); | |
| /* Convert a ssize_t to size_t, return FALSE if negative and set 0 */ | |
| bool curlx_sztouz(ssize_t sznum, size_t *puznum); | |
| + | /* Convert a curl_off_t to size_t, return FALSE if negative or |
| + | * too large and set 0 */ |
| + | bool curlx_sotouz_fits(curl_off_t sonum, size_t *puznum); |
| + | |
| #ifdef _WIN32 | |
| #undef read | |
| #define read(fd, buf, count) (ssize_t)_read(fd, buf, curlx_uztoui(count)) | |
| @@ -192,7 +192,7 @@ static CURLcode mqtt_send(struct Curl_easy *data, | |
| if(result) | |
| return result; | |
| mq->lastTime = curlx_now(); | |
| - | Curl_debug(data, CURLINFO_HEADER_OUT, buf, (size_t)n); |
| + | Curl_debug(data, CURLINFO_HEADER_OUT, buf, n); |
| if(len != n) { | |
| size_t nsend = len - n; | |
| if(curlx_dyn_len(&mq->sendbuf)) { | |
| @@ -602,10 +602,11 @@ static CURLcode mqtt_publish(struct Curl_easy *data) | |
| DEBUGF(infof(data, "mqtt_publish without payload, return bad arg")); | |
| return CURLE_BAD_FUNCTION_ARGUMENT; | |
| } | |
| - | if(postfieldsize < 0) |
| + | if(!curlx_sotouz_fits(postfieldsize, &payloadlen)) { |
| + | if(postfieldsize > 0) /* off_t does not fit into size_t */ |
| + | return CURLE_BAD_FUNCTION_ARGUMENT; |
| payloadlen = strlen(payload); | |
| - | else |
| - | payloadlen = (size_t)postfieldsize; |
| + | } |
| result = mqtt_get_topic(data, &topic, &topiclen); | |
| if(result) | |