@@ -934,18 +934,27 @@ esp_err_t esp_mqtt_client_set_uri(esp_mqtt_client_handle_t client, const char *u
934934 client -> config -> path = NULL ;
935935
936936 if (puri .field_data [UF_PATH ].len || puri .field_data [UF_QUERY ].len ) {
937+ int asprintf_ret_value ;
937938 if (puri .field_data [UF_QUERY ].len == 0 ) {
938- asprintf (& client -> config -> path , "%.*s" , puri .field_data [UF_PATH ].len , uri + puri .field_data [UF_PATH ].off );
939+ asprintf_ret_value = asprintf (& client -> config -> path ,
940+ "%.*s" ,
941+ puri .field_data [UF_PATH ].len , uri + puri .field_data [UF_PATH ].off );
939942 } else if (puri .field_data [UF_PATH ].len == 0 ) {
940- asprintf (& client -> config -> path , "/?%.*s" , puri .field_data [UF_QUERY ].len , uri + puri .field_data [UF_QUERY ].off );
943+ asprintf_ret_value = asprintf (& client -> config -> path ,
944+ "/?%.*s" ,
945+ puri .field_data [UF_QUERY ].len , uri + puri .field_data [UF_QUERY ].off );
941946 } else {
942- asprintf (& client -> config -> path , "%.*s?%.*s" , puri .field_data [UF_PATH ].len , uri + puri .field_data [UF_PATH ].off ,
943- puri .field_data [UF_QUERY ].len , uri + puri .field_data [UF_QUERY ].off );
947+ asprintf_ret_value = asprintf (& client -> config -> path ,
948+ "%.*s?%.*s" ,
949+ puri .field_data [UF_PATH ].len , uri + puri .field_data [UF_PATH ].off ,
950+ puri .field_data [UF_QUERY ].len , uri + puri .field_data [UF_QUERY ].off );
944951 }
945- ESP_MEM_CHECK (TAG , client -> config -> path , {
952+
953+ if (asprintf_ret_value == -1 ) {
954+ ESP_LOGE (TAG ,"%s(%d): %s" , __FUNCTION__ , __LINE__ , "Memory exhausted" );
946955 MQTT_API_UNLOCK (client );
947956 return ESP_ERR_NO_MEM ;
948- });
957+ }
949958 }
950959
951960 if (puri .field_data [UF_PORT ].len ) {
0 commit comments