fixed freeing memory after large size VarValue
This commit is contained in:
parent
e600cdd5f1
commit
dd0cb3bdad
|
|
@ -32,7 +32,7 @@
|
||||||
|
|
||||||
#define EXPECTED_MAX_DATA_RESPONSE_SIZE (4096)
|
#define EXPECTED_MAX_DATA_RESPONSE_SIZE (4096)
|
||||||
#define VAR_MAX_NAME_LENGTH MAX_DYNVAR_NAME_LENGTH
|
#define VAR_MAX_NAME_LENGTH MAX_DYNVAR_NAME_LENGTH
|
||||||
#define VAR_MAX_VALUE_LENGTH MAX_DYNVAR_LENGTH
|
#define VAR_MAX_VALUE_LENGTH (2048)
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,8 @@ extern SYS_CONFIG SysConfig;
|
||||||
|
|
||||||
static void PrintInterfaceState(char *argres, int rw, esp_netif_t *netif)
|
static void PrintInterfaceState(char *argres, int rw, esp_netif_t *netif)
|
||||||
{
|
{
|
||||||
snprintf(argres, MAX_DYNVAR_LENGTH, (netif != NULL && esp_netif_is_netif_up(netif))?"\"CONNECTED\"":"\"DISCONNECTED\"");
|
snprintf(argres, MAX_DYNVAR_LENGTH,
|
||||||
|
(netif != NULL && esp_netif_is_netif_up(netif)) ? "\"CONNECTED\"" : "\"DISCONNECTED\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void funct_wifi_stat(char *argres, int rw)
|
static void funct_wifi_stat(char *argres, int rw)
|
||||||
|
|
@ -60,7 +61,6 @@ static void funct_gsm_stat(char *argres, int rw)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static void funct_mqtt_1_stat(char *argres, int rw)
|
static void funct_mqtt_1_stat(char *argres, int rw)
|
||||||
{
|
{
|
||||||
snprintf(argres, MAX_DYNVAR_LENGTH, (GetMQTT1Connected()) ? "\"CONNECTED\"" : "\"DISCONNECTED\"");
|
snprintf(argres, MAX_DYNVAR_LENGTH, (GetMQTT1Connected()) ? "\"CONNECTED\"" : "\"DISCONNECTED\"");
|
||||||
|
|
@ -74,7 +74,6 @@ static void funct_def_interface(char *argres, int rw)
|
||||||
GetDefaultNetIFName(argres);
|
GetDefaultNetIFName(argres);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void funct_time(char *argres, int rw)
|
static void funct_time(char *argres, int rw)
|
||||||
{
|
{
|
||||||
time_t now;
|
time_t now;
|
||||||
|
|
@ -140,11 +139,20 @@ static void funct_wifiscan(char *argres, int rw)
|
||||||
static void funct_wifiscanres(char *argres, int rw)
|
static void funct_wifiscanres(char *argres, int rw)
|
||||||
{
|
{
|
||||||
int arg = atoi(argres);
|
int arg = atoi(argres);
|
||||||
wifi_ap_record_t *Rec = GetWiFiAPRecord(arg);
|
char onerec[64];
|
||||||
|
wifi_ap_record_t *Rec;
|
||||||
|
strcpy(argres, "[");
|
||||||
|
for (int i = 0; i < arg; i++)
|
||||||
|
{
|
||||||
|
Rec = GetWiFiAPRecord(i);
|
||||||
if (!Rec)
|
if (!Rec)
|
||||||
return;
|
return;
|
||||||
snprintf(argres, MAX_DYNVAR_LENGTH, "{\"ssid\":\"%s\",\"rssi\":%i,\"ch\":%d}", Rec->ssid, Rec->rssi,
|
snprintf(onerec, MAX_DYNVAR_LENGTH, "{\"ssid\":\"%s\",\"rssi\":%i,\"ch\":%d}", Rec->ssid, Rec->rssi,
|
||||||
Rec->primary);
|
Rec->primary);
|
||||||
|
strcat(argres, onerec);
|
||||||
|
if (i < arg - 1)strcat(argres, ",");
|
||||||
|
}
|
||||||
|
strcat(argres, "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
const int hw_rev = CONFIG_BOARD_HARDWARE_REVISION;
|
const int hw_rev = CONFIG_BOARD_HARDWARE_REVISION;
|
||||||
|
|
|
||||||
|
|
@ -89,8 +89,6 @@ static esp_err_t SHA256hmacHash(unsigned char *data,
|
||||||
|
|
||||||
static sys_error_code SysPayloadTypeVarsHandler(data_message_t *MSG)
|
static sys_error_code SysPayloadTypeVarsHandler(data_message_t *MSG)
|
||||||
{
|
{
|
||||||
char VarName[VAR_MAX_NAME_LENGTH];
|
|
||||||
char VarValue[VAR_MAX_VALUE_LENGTH];
|
|
||||||
struct jReadElement result;
|
struct jReadElement result;
|
||||||
const char *err_br;
|
const char *err_br;
|
||||||
const char *err_desc;
|
const char *err_desc;
|
||||||
|
|
@ -112,6 +110,11 @@ static sys_error_code SysPayloadTypeVarsHandler(data_message_t *MSG)
|
||||||
jRead(MSG->inputDataBuffer, "{'data'{'payload'{'variables'", &result);
|
jRead(MSG->inputDataBuffer, "{'data'{'payload'{'variables'", &result);
|
||||||
if (result.dataType == JREAD_OBJECT)
|
if (result.dataType == JREAD_OBJECT)
|
||||||
{ //Write variables
|
{ //Write variables
|
||||||
|
char VarName[VAR_MAX_NAME_LENGTH];
|
||||||
|
char *VarValue = malloc(VAR_MAX_VALUE_LENGTH);
|
||||||
|
if (!VarValue)
|
||||||
|
return SYS_ERROR_NO_MEMORY;
|
||||||
|
|
||||||
for (int i = 0; i < result.elements; ++i)
|
for (int i = 0; i < result.elements; ++i)
|
||||||
{
|
{
|
||||||
jRead_string(MSG->inputDataBuffer, "{'data'{'payload'{'variables'{*", VarName,
|
jRead_string(MSG->inputDataBuffer, "{'data'{'payload'{'variables'{*", VarName,
|
||||||
|
|
@ -150,6 +153,7 @@ static sys_error_code SysPayloadTypeVarsHandler(data_message_t *MSG)
|
||||||
jwObj_raw(VarName, VarValue);
|
jwObj_raw(VarName, VarValue);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
free(VarValue);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return SYS_ERROR_PARSE_VARIABLES;
|
return SYS_ERROR_PARSE_VARIABLES;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user