mirror of
https://github.com/curl/curl.git
synced 2026-04-14 22:11:45 +03:00
mqtt: eliminate size_t cast
Use new curlx_sotouz_fits() instead. Closes #19622
This commit is contained in:
parent
d9e9dd7f20
commit
b812be567a
3 changed files with 25 additions and 4 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue