Commit cd319ad0 authored by chen.weican's avatar chen.weican

【修改内容】修改内存泄漏

【提交人】陈伟灿
parent d36fccd7
......@@ -71,6 +71,7 @@ int kk_parse_deviceSecret(char *info){
fwrite(deviceSecret->valuestring,strlen(deviceSecret->valuestring),1,fp);
fclose(fp);
}
cJSON_Delete(infoObj);
return 0;
}
int kk_parse_token(char *info){
......@@ -86,6 +87,7 @@ int kk_parse_token(char *info){
cJSON *data = cJSON_GetObjectItem(infoObj,"data");
if(data == NULL)
{
cJSON_Delete(infoObj);
return -1;
}
cJSON *jwt = cJSON_GetObjectItem(data,"jwt");
......@@ -103,6 +105,7 @@ int kk_parse_token(char *info){
//fwrite(ccuid->valuestring,strlen(ccuid->valuestring),1,fp);
//fclose(fp);
// }
cJSON_Delete(infoObj);
return 0;
}
char *kk_dictionary_order(char *deviceCode, char *productCode,char *randomId)
......@@ -235,6 +238,7 @@ static char * kk_create_register_info()
base64Out = malloc(128);
if (base64Out == NULL) {
cJSON_Delete(root);
return NULL;
}
INFO_PRINT("[%s][%d]sign_hex:%s\n",__FUNCTION__,__LINE__,sign_hex_str);
......@@ -285,12 +289,15 @@ static int kk_send_register_info(int sockfd,const char * path,int type)
{
char str1[1024], str2[1024],str[16] = {0};
char tmp[128] = {0};
int len = 0;
int len = 0,sendlen = 0;
char *pinfo = NULL;
memset(str2, 0, sizeof(str2));
if(type == 0){
strcat(str2, kk_create_register_info());
pinfo = kk_create_register_info();
strcat(str2, pinfo);
}else{
strcat(str2, kk_create_get_jwt_info());
pinfo = kk_create_get_jwt_info();
strcat(str2, pinfo);
}
len = strlen(str2);
sprintf(str, "%d", len);
......@@ -310,7 +317,11 @@ static int kk_send_register_info(int sockfd,const char * path,int type)
strcat(str1, str2);
strcat(str1, "\r\n\r\n");
INFO_PRINT("%s\n",str1);
return write(sockfd,str1,strlen(str1));
sendlen = write(sockfd,str1,strlen(str1));
if(pinfo){
free(pinfo);
}
return sendlen;
}
int kk_start_ccu_register(void)
......
......@@ -644,16 +644,19 @@ static int kk_device_historyalarm_handle(cJSON *payload)
cJSON *infoItem = cJSON_CreateObject();
cJSON *identifier = cJSON_GetObjectItem(client_list ,"identifier");
if(identifier == NULL){
cJSON_Delete(infoItem);
return -1;
}
cJSON *productCodeJ = cJSON_GetObjectItem(client_list ,"productCode");
if(productCodeJ == NULL){
cJSON_Delete(infoItem);
printf("----------------->6\n");
return -1;
}
cJSON * itime = cJSON_GetObjectItem(client_list ,"alarm_time");
if(itime == NULL){
cJSON_Delete(infoItem);
printf("----------------->1212\n");
return -1;
}
......
......@@ -98,6 +98,7 @@ static kk_map_dev_node_t *kk_map_dev_node_create(const char *deviceCode,const ch
json = cJSON_Parse(buf);
if(json == NULL){
free(buf);
free(node);
debug_log(LOG_ALERT_LEVEL,"[err].\n");
return NULL;
}
......@@ -163,6 +164,7 @@ static kk_map_dev_node_t *kk_map_dev_node_create(const char *deviceCode,const ch
err:
free(buf);
free(node);
return NULL;
}
......
......@@ -118,6 +118,7 @@ cJSON * kk_control_protocol_convert(kk_map_dev_node_t *devNode,int nodeId,cJSON
if(pos==-1){
debug_log(LOG_CRIT_LEVEL,"not find\n");
cJSON_Delete(params);
return NULL;
}
newccuItem = cJSON_GetArrayItem(devNode->newccu,pos);
......@@ -252,24 +253,30 @@ int kk_lan_ctrl_ack(cJSON * nodeId,cJSON * opcode,cJSON * arg)
memset(acData,0,sizeof(acData));
pData = cJSON_Print(nodeId);
snprintf(acData,sizeof(acData),"%s",pData);
free(pData);
tmp_nodeId = cJSON_Parse(acData);
if(tmp_nodeId==NULL){
cJSON_Delete(msg);
return -1;
}
memset(acData,0,sizeof(acData));
pData = cJSON_Print(opcode);
snprintf(acData,sizeof(acData),"%s",pData);
free(pData);
tmp_opcode = cJSON_Parse(acData);
if(tmp_nodeId==NULL){
if(tmp_opcode==NULL){
cJSON_Delete(msg);
return -1;
}
memset(acData,0,sizeof(acData));
pData = cJSON_Print(arg);
snprintf(acData,sizeof(acData),"%s",pData);
free(pData);
tmp_arg = cJSON_Parse(acData);
if(tmp_nodeId==NULL){
if(tmp_arg==NULL){
cJSON_Delete(msg);
return -1;
}
cJSON_AddItemToObject(msg, "nodeid", tmp_nodeId);
......@@ -280,7 +287,7 @@ int kk_lan_ctrl_ack(cJSON * nodeId,cJSON * opcode,cJSON * arg)
}
send_msg_to_module(msg);
cJSON_Delete(msg);
return 0;
}
......
......@@ -323,11 +323,13 @@ void dm_ota_handle(void *data){
if(payload != NULL){
params = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
if(params == NULL){
cJSON_Delete(json);
return;
}
printf("------------------------------2\n");
url = cJSON_GetObjectItem(params, "url");
if(url == NULL){
cJSON_Delete(json);
return;
}
INFO_PRINT("OTA URL :%s\n",url->valuestring);
......@@ -337,6 +339,7 @@ void dm_ota_handle(void *data){
}
s_url = malloc(strlen(url->valuestring)+10);
if(s_url == NULL){
cJSON_Delete(json);
return;
}
memset(s_url,0x0,strlen(url->valuestring)+10);
......@@ -351,6 +354,7 @@ void dm_ota_handle(void *data){
system(CMD);
sleep(1);
kk_publishProgress(100,OTA_STATE_UPGRADE_OK);
cJSON_Delete(json);
sleep(2);
system("reboot -f");
}
......
......@@ -526,7 +526,6 @@ int dm_msg_request (_IN_ dm_msg_request_t *request,_IN_ int isAsync)
{
int res = 0, payload_len = 0,req_info_len = 0;
char *payload = NULL;
lite_cjson_t lite;
char *req_info = NULL;
if (request == NULL || request->params == NULL || request->method == NULL) {
return INVALID_PARAMETER;
......@@ -551,26 +550,9 @@ int dm_msg_request (_IN_ dm_msg_request_t *request,_IN_ int isAsync)
memset(req_info, 0, req_info_len);
snprintf(req_info, req_info_len, DM_MSG_INFO, request->msgTypeStr, request->productCode, request->deviceCode);
memset(&lite, 0, sizeof(lite_cjson_t));
res = lite_cjson_parse(payload, payload_len, &lite);
if (res < SUCCESS_RETURN) {
ERROR_PRINT("Wrong JSON Format, Payload: %s", payload);
free(req_info);
free(payload);
return FAIL_RETURN;
}
memset(&lite, 0, sizeof(lite_cjson_t));
res = lite_cjson_parse(req_info, req_info_len, &lite);
if (res < SUCCESS_RETURN) {
ERROR_PRINT("Wrong JSON Format, Payload: %d", req_info_len);
free(req_info);
free(payload);
return FAIL_RETURN;
}
//if (type & DM_MSG_DEST_CLOUD) {
// dm_client_publish(uri, (unsigned char *)payload, strlen(payload), request->callback);
kk_sendData2app(req_info, payload,isAsync);
free(req_info);
free(payload);
return SUCCESS_RETURN;
......@@ -583,7 +565,6 @@ int dm_msg_response(_IN_ kk_msg_request_payload_t *request, _IN_ kk_msg_response
{
int res = 0, payload_len = 0,res_info_len = 0;
char *uri = NULL, *payload = NULL;
lite_cjson_t lite;
char *res_info = NULL;
if (request == NULL || response == NULL || data == NULL || data_len <= 0) {
......@@ -611,26 +592,6 @@ int dm_msg_response(_IN_ kk_msg_request_payload_t *request, _IN_ kk_msg_response
memset(res_info, 0, res_info_len);
snprintf(res_info, res_info_len, DM_MSG_INFO, response->msgTypeStr,response->productCode, response->deviceCode);
memset(&lite, 0, sizeof(lite_cjson_t));
res = lite_cjson_parse(payload, payload_len, &lite);
if (res < SUCCESS_RETURN) {
ERROR_PRINT("Wrong JSON Format, URI: %s, Payload: %s", uri, payload);
free(uri);
free(payload);
return FAIL_RETURN;
}
memset(&lite, 0, sizeof(lite_cjson_t));
res = lite_cjson_parse(res_info, res_info_len, &lite);
if (res < SUCCESS_RETURN) {
ERROR_PRINT("Wrong JSON Format, Payload: %d", res_info_len);
free(res_info);
free(payload);
return FAIL_RETURN;
}
//dm_client_publish(uri, (unsigned char *)payload, strlen(payload), NULL);
kk_sendData2app(res_info, payload,0);
......@@ -646,7 +607,6 @@ int dm_msg_sync_response(_IN_ kk_msg_request_payload_t *request, _IN_ kk_msg_res
{
int res = 0, payload_len = 0,res_info_len = 0;
char *uri = NULL, *payload = NULL;
lite_cjson_t lite;
char *res_info = NULL;
if (request == NULL || response == NULL || data == NULL || data_len <= 0) {
......@@ -674,26 +634,6 @@ int dm_msg_sync_response(_IN_ kk_msg_request_payload_t *request, _IN_ kk_msg_res
memset(res_info, 0, res_info_len);
snprintf(res_info, res_info_len, DM_MSG_INFO, response->msgTypeStr,response->productCode, response->deviceCode);
memset(&lite, 0, sizeof(lite_cjson_t));
res = lite_cjson_parse(payload, payload_len, &lite);
if (res < SUCCESS_RETURN) {
ERROR_PRINT("Wrong JSON Format, URI: %s, Payload: %s", uri, payload);
free(uri);
free(payload);
return FAIL_RETURN;
}
memset(&lite, 0, sizeof(lite_cjson_t));
res = lite_cjson_parse(res_info, res_info_len, &lite);
if (res < SUCCESS_RETURN) {
ERROR_PRINT("Wrong JSON Format, Payload: %d", res_info_len);
free(res_info);
free(payload);
return FAIL_RETURN;
}
//dm_client_publish(uri, (unsigned char *)payload, strlen(payload), NULL);
kk_sendData2app(res_info, payload,0);
......@@ -1088,6 +1028,7 @@ int dm_msg_thing_property_post_by_identify(char *deviceCode,cJSON *params)
int countPro = 0,subCountPro = 0;
int epNumInt = 1;
int maxEpNum = 1;
cJSON *rootData = NULL;
if(params == NULL || deviceCode == NULL){
return INVALID_PARAMETER;
}
......@@ -1125,10 +1066,6 @@ int dm_msg_thing_property_post_by_identify(char *deviceCode,cJSON *params)
}else{
//printf("---------------------------------->property->identifier:%s\n",property->identifier);
memcpy(pFinal,property->identifier,strlen(property->identifier));
//memset(propertiesbuf[0],0x0,sizeof(propertiesbuf[0]));
//memcpy(propertiesbuf[0],property->identifier,strlen(property->identifier));
//printf("propertiesbuf[0]:%s,num:%d\n",propertiesbuf[0],num);
//epNumInt = 1;
}
if(strcmp(property->identifier,"version") == 0){
versionFlag = 1;
......@@ -1219,12 +1156,13 @@ int dm_msg_thing_property_post_by_identify(char *deviceCode,cJSON *params)
char epIdx[4] = {0};
for(idx = 0; idx < epNumInt; idx++){
countPro = propertyInfoBuf[idx].num;
memset(epIdx,0x0,sizeof(epIdx));
sprintf(epIdx,"%d",idx+1);
cJSON * rootData=cJSON_CreateObject();
if(countPro == 0){
continue;
}
//printf(" ------------------------>countPro:%d\n",countPro);
memset(epIdx,0x0,sizeof(epIdx));
sprintf(epIdx,"%d",idx+1);
rootData=cJSON_CreateObject();
cJSON_AddStringToObject(rootData,"epNum", epIdx);
if(versionItem != NULL && versionFlag == 0){
cJSON_AddStringToObject(rootData,"version", versionItem->valuestring);
......@@ -1235,6 +1173,7 @@ int dm_msg_thing_property_post_by_identify(char *deviceCode,cJSON *params)
||vtype == KK_TSL_DATA_TYPE_BOOL || vtype == KK_TSL_DATA_TYPE_FLOAT \
||vtype == KK_TSL_DATA_TYPE_DOUBLE)
{
//printf(" ------------------------>propertyInfoBuf[idx].info[i].property:%s\n",propertyInfoBuf[idx].info[i].property);
cJSON_AddNumberToObject(rootData,propertyInfoBuf[idx].info[i].property, propertyInfoBuf[idx].info[i].value);
}else if(vtype == KK_TSL_DATA_TYPE_TEXT || vtype == KK_TSL_DATA_TYPE_DATE){
cJSON_AddStringToObject(rootData,propertyInfoBuf[idx].info[i].property, propertyInfoBuf[idx].info[i].valueStr);
......@@ -1258,8 +1197,10 @@ int dm_msg_thing_property_post_by_identify(char *deviceCode,cJSON *params)
}
char* outstr = cJSON_Print(rootData);
dm_mgr_upstream_thing_property_post(node->devid,outstr,strlen(outstr),0);
free(outstr);
cJSON_Delete(rootData);
rootData = NULL;
free(outstr);
outstr = NULL;
}
return SUCCESS_RETURN;
......@@ -1282,10 +1223,12 @@ int kk_msg_cloud_status_notify(char *deviceCode,const char *productCode)
cJSON *params=cJSON_CreateObject();
cJSON_AddNumberToObject(params, "status", 1);
char *paramStr = cJSON_Print(params);
cJSON_Delete(params);
payload_len = strlen(DM_MSG_REQUEST) + 10 + strlen(DM_MSG_VERSION) + strlen(paramStr) + strlen(
method) + 1 + 20 + sizeof(msgId);
payload = malloc(payload_len);
if (payload == NULL) {
free(paramStr);
free(req_info);
return MEMORY_NOT_ENOUGH;
}
......@@ -1301,13 +1244,11 @@ int kk_msg_cloud_status_notify(char *deviceCode,const char *productCode)
cJSON_AddItemToObject(root, "info", infoObj);
cJSON_AddItemToObject(root, "payload",payloadObj);
void *buf = cJSON_Print(root);
printf("------------------------------------------------------->333\n");
kk_sendData2gw(buf, strlen(buf), deviceCode);
free(paramStr);
free(buf);
free(req_info);
free(payload);
cJSON_Delete(params);
cJSON_Delete(root);
return SUCCESS_RETURN;
}
......@@ -1404,6 +1345,10 @@ int kk_msg_execute_property_get(dm_mgr_dev_node_t *node)
payload = malloc(payload_len);
if (payload == NULL) {
free(req_info);
if(needFree){
free(paramS);
}
cJSON_Delete(rootParam);
return MEMORY_NOT_ENOUGH;
}
memset(payload, 0, payload_len);
......
......@@ -682,6 +682,7 @@ static int kk_service_executeDNDMode_handle(cJSON *params)
char *paramstr=cJSON_Print(param);
kk_msg_execute_property_set(search_node->productCode,search_node->deviceCode,paramstr,search_node->fatherDeviceCode);
free(paramstr);
cJSON_Delete(param);
usleep(200000);
}
pList = pList->next;
......@@ -883,6 +884,9 @@ static int kk_service_getGuardSensors_handle(cJSON *param,cJSON *msgId)
pList = (SensorType_t*)malloc(sizeof(SensorType_t)*num);
if(pList == NULL){
ERROR_PRINT("MALLOC ERROR!!!");
cJSON_Delete(payload);
cJSON_Delete(info);
free(infff);
return -1;
}
memset(pList,0x0, sizeof(SensorType_t)*num);
......
......@@ -473,10 +473,11 @@ void mid_cb(void* data, int len){
cJSON_AddItemToObject(rootData,MSG_PAYLOAD_STR, cJSON_Parse(payloadS));
char *pnewout=cJSON_Print(rootData);
kk_sendData2gw(pnewout, strlen(pnewout), gw_node->fatherDeviceCode);//send to sub device
cJSON_Delete(rootData);
free(info_rootS);
free(payloadS);
free(pnewout);
cJSON_Delete(rootData);
}
else{
ERROR_PRINT("wrong type\n");
......@@ -848,7 +849,6 @@ void kk_platMsg_handle(void* data, char* chalMark){
INFO_PRINT("save property and send to cloud \n");
jsonPay = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
if(jsonPay == NULL) goto error;
char* outstr = cJSON_Print(payload);
dm_mgr_dev_node_t *search_node = NULL;
res = dm_mgr_get_device_by_devicecode(info_dcode->valuestring,&search_node);
if (res < SUCCESS_RETURN) {
......@@ -871,17 +871,14 @@ void kk_platMsg_handle(void* data, char* chalMark){
kk_history_insert_Outlet_info(info_dcode->valuestring,buf,"",HAL_GetTime());
}
}
char* outstr = cJSON_Print(payload);
kk_tsl_property_set_by_shadow(search_node->dev_shadow, outstr, strlen(outstr)+1);
dm_msg_thing_property_post_by_identify(info_dcode->valuestring,jsonPay);
proCode = cJSON_GetObjectItem(info, MSG_PRODUCT_CODE_STR);
if(strcmp(proCode->valuestring,"3053")&&
strcmp(proCode->valuestring,"3042")){
kk_scene_iftt_check(info_dcode->valuestring,jsonPay);
}
free(outstr);
}
}else if(strstr(msgType->valuestring, KK_THING_TOPO_DELETE_MSG) != NULL){
......
......@@ -759,8 +759,6 @@ int BodySensorTrigger_report(const char *deviceCode,int ep,cJSON *param)
int flag = 0;
cJSON * item = cJSON_GetObjectItem(param,"MotionAlarmState");
printf("\n\n ------------------>param=%s \n\n",cJSON_Print(param));
if(item==NULL||item->type!=cJSON_Number||
item->valueint!=1){
return 0;
......@@ -1907,6 +1905,7 @@ static void kk_scene_send_action_msg(kk_scene_action_info_t *pInfo)
valueType = kk_dm_get_property_type(pInfo->deviceCode,pInfo->propertyName);
if(valueType < 0){
ERROR_PRINT("[%d]kk_scene_send_action_msg valueType < 0!!!\n",__LINE__);
cJSON_Delete(root);
free(pInfo);
return;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment