esp_http_client: Fix issue when response headers have empty value

Closes: https://github.com/espressif/esp-idf/issues/5553
This commit is contained in:
Shubham Kulkarni 2020-08-13 14:26:07 +05:30
parent 9ac8b8739b
commit bb8981903e
3 changed files with 8 additions and 8 deletions

View File

@ -434,12 +434,12 @@ static esp_err_t _set_config(esp_http_client_handle_t client, const esp_http_cli
} }
if (config->transport_type == HTTP_TRANSPORT_OVER_SSL) { if (config->transport_type == HTTP_TRANSPORT_OVER_SSL) {
http_utils_assign_string(&client->connection_info.scheme, "https", 0); http_utils_assign_string(&client->connection_info.scheme, "https", -1);
if (client->connection_info.port == 0) { if (client->connection_info.port == 0) {
client->connection_info.port = DEFAULT_HTTPS_PORT; client->connection_info.port = DEFAULT_HTTPS_PORT;
} }
} else { } else {
http_utils_assign_string(&client->connection_info.scheme, "http", 0); http_utils_assign_string(&client->connection_info.scheme, "http", -1);
if (client->connection_info.port == 0) { if (client->connection_info.port == 0) {
client->connection_info.port = DEFAULT_HTTP_PORT; client->connection_info.port = DEFAULT_HTTP_PORT;
} }
@ -783,10 +783,10 @@ esp_err_t esp_http_client_set_url(esp_http_client_handle_t client, const char *u
if (password) { if (password) {
*password = 0; *password = 0;
password ++; password ++;
http_utils_assign_string(&client->connection_info.password, password, 0); http_utils_assign_string(&client->connection_info.password, password, -1);
HTTP_MEM_CHECK(TAG, client->connection_info.password, return ESP_ERR_NO_MEM); HTTP_MEM_CHECK(TAG, client->connection_info.password, return ESP_ERR_NO_MEM);
} }
http_utils_assign_string(&client->connection_info.username, username, 0); http_utils_assign_string(&client->connection_info.username, username, -1);
HTTP_MEM_CHECK(TAG, client->connection_info.username, return ESP_ERR_NO_MEM); HTTP_MEM_CHECK(TAG, client->connection_info.username, return ESP_ERR_NO_MEM);
free(user_info); free(user_info);
} else { } else {
@ -798,7 +798,7 @@ esp_err_t esp_http_client_set_url(esp_http_client_handle_t client, const char *u
if (purl.field_data[UF_PATH].len) { if (purl.field_data[UF_PATH].len) {
http_utils_assign_string(&client->connection_info.path, url + purl.field_data[UF_PATH].off, purl.field_data[UF_PATH].len); http_utils_assign_string(&client->connection_info.path, url + purl.field_data[UF_PATH].off, purl.field_data[UF_PATH].len);
} else { } else {
http_utils_assign_string(&client->connection_info.path, "/", 0); http_utils_assign_string(&client->connection_info.path, "/", -1);
} }
HTTP_MEM_CHECK(TAG, client->connection_info.path, return ESP_ERR_NO_MEM); HTTP_MEM_CHECK(TAG, client->connection_info.path, return ESP_ERR_NO_MEM);

View File

@ -86,10 +86,10 @@ static esp_err_t http_header_new_item(http_header_handle_t header, const char *k
item = calloc(1, sizeof(http_header_item_t)); item = calloc(1, sizeof(http_header_item_t));
HTTP_MEM_CHECK(TAG, item, return ESP_ERR_NO_MEM); HTTP_MEM_CHECK(TAG, item, return ESP_ERR_NO_MEM);
http_utils_assign_string(&item->key, key, 0); http_utils_assign_string(&item->key, key, -1);
HTTP_MEM_CHECK(TAG, item->key, goto _header_new_item_exit); HTTP_MEM_CHECK(TAG, item->key, goto _header_new_item_exit);
http_utils_trim_whitespace(&item->key); http_utils_trim_whitespace(&item->key);
http_utils_assign_string(&item->value, value, 0); http_utils_assign_string(&item->value, value, -1);
HTTP_MEM_CHECK(TAG, item->value, goto _header_new_item_exit); HTTP_MEM_CHECK(TAG, item->value, goto _header_new_item_exit);
http_utils_trim_whitespace(&item->value); http_utils_trim_whitespace(&item->value);
STAILQ_INSERT_TAIL(header, item, next); STAILQ_INSERT_TAIL(header, item, next);

View File

@ -45,7 +45,7 @@ char *http_utils_assign_string(char **str, const char *new_str, int len)
return NULL; return NULL;
} }
char *old_str = *str; char *old_str = *str;
if (l <= 0) { if (l < 0) {
l = strlen(new_str); l = strlen(new_str);
} }
if (old_str) { if (old_str) {