Skip to content

Commit b0a54f3

Browse files
committed
fix(openai): incorrect free json payload
1 parent 32eb5cb commit b0a54f3

File tree

6 files changed

+23
-15
lines changed

6 files changed

+23
-15
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ The registered components in ESP-IoT-Solution are listed below:
110110
| [led_indicator](https://components.espressif.com/components/espressif/led_indicator/versions/1.0.0) | [![1.0.0](https://img.shields.io/badge/Stable-1.0.0-blue)](https://components.espressif.com/components/espressif/led_indicator/versions/1.0.0) |
111111
| [lightbulb_driver](https://components.espressif.com/components/espressif/lightbulb_driver/versions/1.3.3) | [![1.3.3](https://img.shields.io/badge/Stable-1.3.3-blue)](https://components.espressif.com/components/espressif/lightbulb_driver/versions/1.3.3) |
112112
| [ntc_driver](https://components.espressif.com/components/espressif/ntc_driver/versions/1.1.0) | [![1.1.0](https://img.shields.io/badge/Stable-1.1.0-blue)](https://components.espressif.com/components/espressif/ntc_driver/versions/1.1.0) |
113-
| [openai](https://components.espressif.com/components/espressif/openai/versions/1.0.0) | [![1.0.0](https://img.shields.io/badge/Stable-1.0.0-blue)](https://components.espressif.com/components/espressif/openai/versions/1.0.0) |
113+
| [openai](https://components.espressif.com/components/espressif/openai/versions/1.0.1) | [![1.0.1](https://img.shields.io/badge/Stable-1.0.1-blue)](https://components.espressif.com/components/espressif/openai/versions/1.0.1) |
114114
| [pwm_audio](https://components.espressif.com/components/espressif/pwm_audio/versions/1.1.2) | [![1.1.2](https://img.shields.io/badge/Stable-1.1.2-blue)](https://components.espressif.com/components/espressif/pwm_audio/versions/1.1.2) |
115115
| [spi_bus](https://components.espressif.com/components/espressif/spi_bus/versions/1.0.0) | [![1.0.0](https://img.shields.io/badge/Stable-1.0.0-blue)](https://components.espressif.com/components/espressif/spi_bus/versions/1.0.0) |
116116
| [touch_proximity_sensor](https://components.espressif.com/components/espressif/touch_proximity_sensor/versions/0.1.2) | [![0.1.2](https://img.shields.io/badge/Beta-0.1.2-yellow)](https://components.espressif.com/components/espressif/touch_proximity_sensor/versions/0.1.2) |

README_CN.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ ESP-IoT-Solution 中注册的组件如下:
110110
| [led_indicator](https://components.espressif.com/components/espressif/led_indicator/versions/1.0.0) | [![1.0.0](https://img.shields.io/badge/Stable-1.0.0-blue)](https://components.espressif.com/components/espressif/led_indicator/versions/1.0.0) |
111111
| [lightbulb_driver](https://components.espressif.com/components/espressif/lightbulb_driver/versions/1.3.3) | [![1.3.3](https://img.shields.io/badge/Stable-1.3.3-blue)](https://components.espressif.com/components/espressif/lightbulb_driver/versions/1.3.3) |
112112
| [ntc_driver](https://components.espressif.com/components/espressif/ntc_driver/versions/1.1.0) | [![1.1.0](https://img.shields.io/badge/Stable-1.1.0-blue)](https://components.espressif.com/components/espressif/ntc_driver/versions/1.1.0) |
113-
| [openai](https://components.espressif.com/components/espressif/openai/versions/1.0.0) | [![1.0.0](https://img.shields.io/badge/Stable-1.0.0-blue)](https://components.espressif.com/components/espressif/openai/versions/1.0.0) |
113+
| [openai](https://components.espressif.com/components/espressif/openai/versions/1.0.1) | [![1.0.1](https://img.shields.io/badge/Stable-1.0.1-blue)](https://components.espressif.com/components/espressif/openai/versions/1.0.1) |
114114
| [pwm_audio](https://components.espressif.com/components/espressif/pwm_audio/versions/1.1.2) | [![1.1.2](https://img.shields.io/badge/Stable-1.1.2-blue)](https://components.espressif.com/components/espressif/pwm_audio/versions/1.1.2) |
115115
| [spi_bus](https://components.espressif.com/components/espressif/spi_bus/versions/1.0.0) | [![1.0.0](https://img.shields.io/badge/Stable-1.0.0-blue)](https://components.espressif.com/components/espressif/spi_bus/versions/1.0.0) |
116116
| [touch_proximity_sensor](https://components.espressif.com/components/espressif/touch_proximity_sensor/versions/0.1.2) | [![0.1.2](https://img.shields.io/badge/Beta-0.1.2-yellow)](https://components.espressif.com/components/espressif/touch_proximity_sensor/versions/0.1.2) |

components/openai/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# ChangeLog
22

3+
## v1.0.1 - 2024-11-5
4+
5+
### Bug Fixes:
6+
7+
* Fix incorrect free of cjson object's payload memory
8+
39
## v1.0.0 - 2024-5-15
410

511
### Break Changes:

components/openai/OpenAI.c

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
1+
/* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
22
*
33
* SPDX-License-Identifier: Apache-2.0
44
*/
@@ -587,7 +587,6 @@ static OpenAI_StringResponse_t *OpenAI_StringResponseCreate(char *payload)
587587

588588
// Parse payload
589589
cJSON *json = cJSON_Parse(payload);
590-
free(payload);
591590

592591
// Check for error
593592
char *error = getJsonError(json);
@@ -653,6 +652,7 @@ static OpenAI_StringResponse_t *OpenAI_StringResponseCreate(char *payload)
653652
}
654653

655654
cJSON_Delete(json);
655+
free(payload);
656656
_stringResponse->parent.getUsage = &OpenAI_StringResponseGetUsage;
657657
_stringResponse->parent.getLen = &OpenAI_StringResponseGetLen;
658658
_stringResponse->parent.getData = &OpenAI_StringResponseGetDate;
@@ -661,6 +661,7 @@ static OpenAI_StringResponse_t *OpenAI_StringResponseCreate(char *payload)
661661
return &_stringResponse->parent;
662662
end:
663663
cJSON_Delete(json);
664+
free(payload);
664665
OpenAI_StringResponseDelete(&_stringResponse->parent);
665666
return NULL;
666667
}
@@ -2079,24 +2080,24 @@ static char *OpenAI_AudioTranscriptionFile(OpenAI_AudioTranscription_t *audioTra
20792080
free(data);
20802081
OPENAI_ERROR_CHECK(result != NULL, "Empty result!", NULL);
20812082
cJSON *json = cJSON_Parse(result);
2082-
free(result);
2083-
result = NULL;
2083+
char *result_ret = NULL;
20842084
char *error = getJsonError(json);
20852085
if (error != NULL) {
20862086
if (strcmp(error, "cJSON_Parse failed!") == 0) {
20872087
free(error);
20882088
error = NULL;
20892089
}
2090-
result = error;
2090+
result_ret = error;
20912091
} else {
20922092
if (cJSON_HasObjectItem(json, "text")) {
20932093
cJSON *text = cJSON_GetObjectItem(json, "text");
2094-
result = strdup(cJSON_GetStringValue(text));
2094+
result_ret = strdup(cJSON_GetStringValue(text));
20952095
}
20962096
}
20972097

20982098
cJSON_Delete(json);
2099-
return result;
2099+
free(result);
2100+
return result_ret;
21002101
}
21012102

21022103
static OpenAI_AudioTranscription_t *OpenAI_AudioTranscriptionCreate(OpenAI_t *openai)
@@ -2225,17 +2226,18 @@ static char *OpenAI_AudioTranslationFile(OpenAI_AudioTranslation_t *audioTransla
22252226
OPENAI_ERROR_CHECK(result != NULL, "Empty result!", NULL);
22262227
cJSON *json = cJSON_Parse(result);
22272228
char *error = getJsonError(json);
2229+
char *result_ret = NULL;
22282230
if (error != NULL) {
22292231
ESP_LOGE(TAG, "%s", error);
22302232
} else {
2231-
free(result);
22322233
if (cJSON_HasObjectItem(json, "text")) {
22332234
cJSON *text = cJSON_GetObjectItem(json, "text");
2234-
result = strdup(cJSON_GetStringValue(text));
2235+
result_ret = strdup(cJSON_GetStringValue(text));
22352236
}
22362237
}
22372238
cJSON_Delete(json);
2238-
return result;
2239+
free(result);
2240+
return result_ret;
22392241
}
22402242

22412243
static OpenAI_AudioTranslation_t *OpenAI_AudioTranslationCreate(OpenAI_t *openai)
@@ -2397,7 +2399,7 @@ static char *OpenAI_Request(const char *base_url, const char *api_key, const cha
23972399
esp_http_client_get_chunk_length(client, &content_length);
23982400
}
23992401
ESP_LOGD(TAG, "content_length=%d", content_length);
2400-
OPENAI_ERROR_CHECK_GOTO(content_length >= 0, "HTTP client fetch headers failed!", end);
2402+
OPENAI_ERROR_CHECK_GOTO(content_length > 0, "HTTP client fetch headers failed!", end);
24012403
result = (char *)malloc(content_length + 1);
24022404
int read = esp_http_client_read_response(client, result, content_length);
24032405
if (read != content_length) {

components/openai/idf_component.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version: "1.0.0"
1+
version: "1.0.1"
22
description: OpenAI library compatible with ESP-IDF
33
url: https://github.com/espressif/esp-iot-solution
44
repository: https://github.com/espressif/esp-iot-solution.git

components/openai/test_apps/main/test_openai.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ void app_main(void)
243243
ESP_ERROR_CHECK(esp_netif_init());
244244
ESP_ERROR_CHECK(esp_event_loop_create_default());
245245

246-
// 比较 openai_key 是否是空字符串
246+
// Compare whether OpenAI_KEY is an empty string
247247
if (strlen(openai_key) == 0) {
248248
ESP_LOGE(TAG, "Please enter your openai_key");
249249
return;

0 commit comments

Comments
 (0)