From: Daniel Stenberg Date: Mon, 24 Mar 2025 13:21:32 +0000 (+0100) Subject: mqtt: cleanups X-Git-Tag: curl-8_13_0~64 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9a7baa34cce052a4e996ddbb50ba96b3b23a1b3d;p=thirdparty%2Fcurl.git mqtt: cleanups - make a variable const - use calloc instead of malloc + memset - fix comment language - improve error messages Closes #16826 --- diff --git a/lib/mqtt.c b/lib/mqtt.c index 287037d483..c9ba51c448 100644 --- a/lib/mqtt.c +++ b/lib/mqtt.c @@ -257,7 +257,6 @@ static CURLcode mqtt_connect(struct Curl_easy *data) int remain_pos = 0; char remain[4] = {0}; size_t packetlen = 0; - size_t payloadlen = 0; size_t start_user = 0; size_t start_pwd = 0; char client_id[MQTT_CLIENTID_LEN + 1] = "curl"; @@ -272,14 +271,11 @@ static CURLcode mqtt_connect(struct Curl_easy *data) const char *passwd = data->state.aptr.passwd ? data->state.aptr.passwd : ""; const size_t plen = strlen(passwd); - - payloadlen = ulen + plen + MQTT_CLIENTID_LEN + 2; - /* The plus 2 are for the MSB and LSB describing the length of the string to - * be added on the payload. Refer to spec 1.5.2 and 1.5.4 */ - if(ulen) - payloadlen += 2; - if(plen) - payloadlen += 2; + const size_t payloadlen = ulen + plen + MQTT_CLIENTID_LEN + 2 + + /* The plus 2s below are for the MSB and LSB describing the length of the + string to be added on the payload. Refer to spec 1.5.2 and 1.5.4 */ + (ulen ? 2 : 0) + + (plen ? 2 : 0); /* getting how much occupy the remain length */ remain_pos = mqtt_encode_len(remain, payloadlen + 10); @@ -288,12 +284,11 @@ static CURLcode mqtt_connect(struct Curl_easy *data) packetlen = payloadlen + 10 + remain_pos + 1; /* allocating packet */ - if(packetlen > 268435455) + if(packetlen > 0xFFFFFFF) return CURLE_WEIRD_SERVER_REPLY; - packet = malloc(packetlen); + packet = calloc(1, packetlen); if(!packet) return CURLE_OUT_OF_MEMORY; - memset(packet, 0, packetlen); /* set initial values for the CONNECT packet */ pos = init_connpack(packet, remain, remain_pos); @@ -309,9 +304,9 @@ static CURLcode mqtt_connect(struct Curl_easy *data) } infof(data, "Using client id '%s'", client_id); - /* position where starts the user payload */ + /* position where the user payload starts */ start_user = pos + 3 + MQTT_CLIENTID_LEN; - /* position where starts the password payload */ + /* position where the password payload starts */ start_pwd = start_user + ulen; /* if username was provided, add it to the packet */ if(ulen) { @@ -320,7 +315,7 @@ static CURLcode mqtt_connect(struct Curl_easy *data) rc = add_user(username, ulen, (unsigned char *)packet, start_user, remain_pos); if(rc) { - failf(data, "Username is too large: [%zu]", ulen); + failf(data, "Username too long: [%zu]", ulen); result = CURLE_WEIRD_SERVER_REPLY; goto end; } @@ -330,7 +325,7 @@ static CURLcode mqtt_connect(struct Curl_easy *data) if(plen) { rc = add_passwd(passwd, plen, packet, start_pwd, remain_pos); if(rc) { - failf(data, "Password is too large: [%zu]", plen); + failf(data, "Password too long: [%zu]", plen); result = CURLE_WEIRD_SERVER_REPLY; goto end; }