修改内存泄露风险和sd_process死机问题

This commit is contained in:
sober.song 2024-01-04 14:47:29 +08:00
parent 55e5373443
commit 12b8268f83
5 changed files with 113 additions and 81 deletions

View File

@ -1108,11 +1108,10 @@ SINT32 sf_ftp_dailyreport_send(void)
MLOGD("start\n"); MLOGD("start\n");
char *file_path = NULL; char *dp_filename = sf_root_path_strcat(SF_DAILYREPORT_FILENAME);
file_path = sf_root_path_strcat(SF_DAILYREPORT_FILENAME); if(dp_filename == NULL)
if(file_path == NULL)
{ {
free(file_path); free(dp_filename);
return SF_FAILURE; return SF_FAILURE;
} }
@ -1121,8 +1120,8 @@ SINT32 sf_ftp_dailyreport_send(void)
printf("%s:%d err create dailyreport file\n", __FUNCTION__, __LINE__); printf("%s:%d err create dailyreport file\n", __FUNCTION__, __LINE__);
return SF_FAILURE; return SF_FAILURE;
} }
sprintf((char *)filePath, "%s", file_path); sprintf((char *)filePath, "%s", dp_filename);
free(file_path); free(dp_filename);
//sprintf((char *)filePath, "UFS:/%s-dr.txt", pPara->ModuleImei); //sprintf((char *)filePath, "UFS:/%s-dr.txt", pPara->ModuleImei);
printf("%s:%d filePath:%s\n", __FUNCTION__, __LINE__, filePath); printf("%s:%d filePath:%s\n", __FUNCTION__, __LINE__, filePath);
@ -1132,10 +1131,10 @@ SINT32 sf_ftp_dailyreport_send(void)
ret = SF_SUCCESS;//sf_quectel_upload_file_to_module((UINT8 *)SF_DAILYREPORT_FILENAME, (UINT8 *)SF_DAILYREPORT_TXT); ret = SF_SUCCESS;//sf_quectel_upload_file_to_module((UINT8 *)SF_DAILYREPORT_FILENAME, (UINT8 *)SF_DAILYREPORT_TXT);
file_path = sf_root_path_strcat(SF_ERROR_CODE); char *err_code_path = sf_root_path_strcat(SF_ERROR_CODE);
if(file_path == NULL) if(err_code_path == NULL)
{ {
free(file_path); free(err_code_path);
return SF_FAILURE; return SF_FAILURE;
} }
if(SF_SUCCESS != ret) if(SF_SUCCESS != ret)
@ -1168,12 +1167,12 @@ SINT32 sf_ftp_dailyreport_send(void)
pSifarPara->videoSendFailCount = 0; pSifarPara->videoSendFailCount = 0;
pSifarPara->videoSendSucessCount = 0; pSifarPara->videoSendSucessCount = 0;
pSifarPara->SendlowPowerWarnCnt = 0; pSifarPara->SendlowPowerWarnCnt = 0;
sf_file_remove(file_path); sf_file_remove(err_code_path);
} }
sf_dailyReport_set(); sf_dailyReport_set();
} }
MLOGD(" end ret:[0x%08X]\n", ret); MLOGD(" end ret:[0x%08X]\n", ret);
free(file_path); free(err_code_path);
return ret; return ret;
} }
@ -2211,9 +2210,16 @@ SINT32 sf_log_send_ftp(void)
ssl = ((2 == pPara->FtpSwitch) ? 1 : 0); ssl = ((2 == pPara->FtpSwitch) ? 1 : 0);
gprsMode = 0;//puiPara->GprsMode; gprsMode = 0;//puiPara->GprsMode;
char *file_path = sf_root_path_strcat(LOG_AT_FILE_PATH);
if(file_path == NULL)
{
free(file_path);
return SF_FAILURE;
}
MLOGD("start\n"); MLOGD("start\n");
sf_set_send_log(0); sf_set_send_log(0);
if(sf_file_IsExsit(LOG_AT_FILE_PATH) != SF_TRUE) if(sf_file_IsExsit(file_path) != SF_TRUE)
{ {
printf("%s:%d err file\n", __FUNCTION__, __LINE__); printf("%s:%d err file\n", __FUNCTION__, __LINE__);
return SF_FAILURE; return SF_FAILURE;
@ -2224,7 +2230,7 @@ SINT32 sf_log_send_ftp(void)
if(SF_SUCCESS == ret) if(SF_SUCCESS == ret)
{ {
//sprintf((char *)filePath, "UFS:/%s", SF_LOG_TXT); //sprintf((char *)filePath, "UFS:/%s", SF_LOG_TXT);
sprintf((char *)filePath, "%s", LOG_AT_FILE_PATH); sprintf((char *)filePath, "%s", file_path);
printf("%s:%d filePath:%s\n", __FUNCTION__, __LINE__, filePath); printf("%s:%d filePath:%s\n", __FUNCTION__, __LINE__, filePath);
@ -2260,6 +2266,7 @@ SINT32 sf_log_send_ftp(void)
//printf("[%s:%d]ret:[0x%08X],ret2:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret, ret2); //printf("[%s:%d]ret:[0x%08X],ret2:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret, ret2);
MLOGD(" end ret:[0x%08X],ret2:[0x%08X]\n", ret, ret2); MLOGD(" end ret:[0x%08X],ret2:[0x%08X]\n", ret, ret2);
free(file_path);
if(ret != SF_SUCCESS) if(ret != SF_SUCCESS)
{ {
return ret; return ret;

View File

@ -602,11 +602,11 @@ static SINT32 sf_app_process_cmd_keyctrl(SF_MESSAGE_BUF_S *pMessageBuf)
return SF_SUCCESS; return SF_SUCCESS;
} }
static SINT32 sfStrgDevOnActionMount(SF_MESSAGE_BUF_S *pMessageBuf) static SINT32 sfStrgDevOnActionMount(int dev_id, int result)
{ {
SINT16 startup = sf_poweron_type_get(); SINT16 startup = sf_poweron_type_get();
UINT32 status = 0; UINT32 status = 0;
status = pMessageBuf->arg3; status = result;
switch (status) switch (status)
{ {
case FST_STA_OK: case FST_STA_OK:
@ -628,7 +628,7 @@ static SINT32 sfStrgDevOnActionMount(SF_MESSAGE_BUF_S *pMessageBuf)
} }
} }
sf_statistics_param_load(sf_statistics_param_get()); sf_statistics_param_load(sf_statistics_param_get());
MLOGI("card-%d mount OK\r\n", pMessageBuf->arg2 + 1); MLOGI("card-%d mount OK\r\n", dev_id + 1);
sf_set_key_fw_update(sf_get_fw_update());//up fw sf_set_key_fw_update(sf_get_fw_update());//up fw
if(sf_get_mcu_update_flag())//up mcu if(sf_get_mcu_update_flag())//up mcu
{ {
@ -637,26 +637,26 @@ static SINT32 sfStrgDevOnActionMount(SF_MESSAGE_BUF_S *pMessageBuf)
break; break;
case FST_STA_DISK_UNFORMAT: case FST_STA_DISK_UNFORMAT:
sf_statistics_param_load(sf_statistics_param_get()); sf_statistics_param_load(sf_statistics_param_get());
MLOGI("^Rcard-%d mount FAIL: Unformat\r\n", pMessageBuf->arg2 + 1); MLOGI("^Rcard-%d mount FAIL: Unformat\r\n", dev_id + 1);
break; break;
case FST_STA_DISK_UNKNOWN_FORMAT: case FST_STA_DISK_UNKNOWN_FORMAT:
sf_sys_status_led_set(SF_LED_SYS_STATE_SD_FULL); sf_sys_status_led_set(SF_LED_SYS_STATE_SD_FULL);
MLOGI("^Rcard-%d mount FAIL: Unknown Format\r\n", pMessageBuf->arg2 + 1); MLOGI("^Rcard-%d mount FAIL: Unknown Format\r\n", dev_id + 1);
break; break;
case FST_STA_CARD_ERR: case FST_STA_CARD_ERR:
sf_sys_status_led_set(SF_LED_SYS_STATE_SD_ERROR); sf_sys_status_led_set(SF_LED_SYS_STATE_SD_ERROR);
MLOGI("^Rcard-%d mount FAIL: Card Error\r\n", pMessageBuf->arg2 + 1); MLOGI("^Rcard-%d mount FAIL: Card Error\r\n", dev_id + 1);
break; break;
default: default:
MLOGI("^Rcard-%d mount FAIL: ErrID=%d\r\n", pMessageBuf->arg2 + 1, status); MLOGI("^Rcard-%d mount FAIL: ErrID=%d\r\n", dev_id + 1, status);
break; break;
} }
return SF_SUCCESS; return SF_SUCCESS;
} }
static SINT32 sfStrgDevSdHandler(SF_MESSAGE_BUF_S *pMessageBuf) static SINT32 sfStrgDevSdHandler(int cb_evt, int dev_id, int result)
{ {
switch(pMessageBuf->arg1) switch(cb_evt)
{ {
case CMD_SD_STRG_CB_UNKNOWN: case CMD_SD_STRG_CB_UNKNOWN:
sf_set_card_full(1); sf_set_card_full(1);
@ -670,7 +670,7 @@ static SINT32 sfStrgDevSdHandler(SF_MESSAGE_BUF_S *pMessageBuf)
sf_sys_status_led_set(SF_LED_SYS_STATE_SD_ERROR); sf_sys_status_led_set(SF_LED_SYS_STATE_SD_ERROR);
break; break;
case CMD_SD_STRG_CB_MOUNT_FINISH: case CMD_SD_STRG_CB_MOUNT_FINISH:
sfStrgDevOnActionMount(pMessageBuf->arg3); sfStrgDevOnActionMount(dev_id, result);
break; break;
case CMD_SD_STRG_CB_UNMOUNT_FINISH: case CMD_SD_STRG_CB_UNMOUNT_FINISH:
sf_set_card(0); sf_set_card(0);
@ -682,16 +682,16 @@ static SINT32 sfStrgDevSdHandler(SF_MESSAGE_BUF_S *pMessageBuf)
return SF_SUCCESS; return SF_SUCCESS;
} }
static SINT32 sfStrgDevEmmcHandler(SF_MESSAGE_BUF_S *pMessageBuf) static SINT32 sfStrgDevEmmcHandler(int cb_evt, int dev_id, int result)
{ {
switch(pMessageBuf->arg1) switch(cb_evt)
{ {
case CMD_SD_STRG_CB_UNKNOWN: case CMD_SD_STRG_CB_UNKNOWN:
sf_set_card_full(1); sf_set_card_full(1);
break; break;
case CMD_SD_STRG_CB_MOUNT_FINISH: case CMD_SD_STRG_CB_MOUNT_FINISH:
sfStrgDevOnActionMount(pMessageBuf->arg3); sfStrgDevOnActionMount(dev_id, result);
break; break;
case CMD_SD_STRG_CB_UNMOUNT_FINISH: case CMD_SD_STRG_CB_UNMOUNT_FINISH:
sf_set_card(0); sf_set_card(0);
@ -708,13 +708,13 @@ static SINT32 sf_app_process_cmd_SD(SF_MESSAGE_BUF_S *pMessageBuf)
{ {
MLOGD("[dev_id:%d,evt:%d]\n",pMessageBuf->arg2,pMessageBuf->arg1); MLOGD("[dev_id:%d,evt:%d]\n",pMessageBuf->arg2,pMessageBuf->arg1);
//if(pMessageBuf->arg2 == MMC_DEV_SD) if(pMessageBuf->arg2 == MMC_DEV_SD)
{ {
//sfStrgDevSdHandler(pMessageBuf); sfStrgDevSdHandler(pMessageBuf->arg1, pMessageBuf->arg2, pMessageBuf->arg3);
} }
//else if(pMessageBuf->arg2 == MMC_DEV_EMMC) //else if(pMessageBuf->arg2 == MMC_DEV_EMMC)
{ {
//sfStrgDevEmmcHandler(pMessageBuf); //sfStrgDevEmmcHandler(pMessageBuf->arg1, pMessageBuf->arg2, pMessageBuf->arg3);
} }
switch(pMessageBuf->arg1) switch(pMessageBuf->arg1)

View File

@ -942,26 +942,25 @@ UINT32 sf_create_dailyreport_file(void)
char imageSize = 0; char imageSize = 0;
char videoSize = 0; char videoSize = 0;
/*Avoid New Card*/ /*Avoid New Card*/
char *file_path = NULL; char *thumb_dir = sf_root_path_strcat(SF_THUMB_DIR);
file_path = sf_root_path_strcat(SF_THUMB_DIR); if(thumb_dir == NULL)
if(file_path == NULL)
{ {
free(file_path); free(thumb_dir);
return SF_FAILURE; return SF_FAILURE;
} }
if (access(file_path, F_OK) == -1) { if (access(thumb_dir, F_OK) == -1) {
printf("%s directory does not exist. Creating...\n", file_path); printf("%s directory does not exist. Creating...\n", thumb_dir);
if (mkdir(file_path, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) == -1) { if (mkdir(thumb_dir, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) == -1) {
perror("mkdir() error"); perror("mkdir() error");
} else { } else {
printf("%s directory created.\n", file_path); printf("%s directory created.\n", thumb_dir);
} }
} else { } else {
printf("%s directory exists.\n", file_path); printf("%s directory exists.\n", thumb_dir);
} }
free(file_path); free(thumb_dir);
//sf_create_thumb_dir(); //sf_create_thumb_dir();
if(SF_CAMID_ON == pPara->CamNameSwitch) if(SF_CAMID_ON == pPara->CamNameSwitch)
@ -1288,20 +1287,20 @@ UINT32 sf_create_dailyreport_file(void)
printf("szTmp2=%s\n",szTmp2); printf("szTmp2=%s\n",szTmp2);
printf("cfgTmp:%s\n", cfgTmp); printf("cfgTmp:%s\n", cfgTmp);
file_path = sf_root_path_strcat(SF_DAILYREPORT_FILENAME); char *dailyrp_file = sf_root_path_strcat(SF_DAILYREPORT_FILENAME);
if(file_path == NULL) if(dailyrp_file == NULL)
{ {
free(file_path); free(dailyrp_file);
return SF_FAILURE; return SF_FAILURE;
} }
if(sf_file_IsExsit(file_path) == SF_TRUE){ if(sf_file_IsExsit(dailyrp_file) == SF_TRUE){
sf_file_remove(file_path); sf_file_remove(dailyrp_file);
} }
fd = open(file_path, O_APPEND | O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR); fd = open(dailyrp_file, O_APPEND | O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);
if(fd) if(fd)
{ {
free(file_path); free(dailyrp_file);
szTmpsize=SF_STRLEN(szTmp); szTmpsize=SF_STRLEN(szTmp);
//printf("szTmpsize=%d\n",szTmpsize); //printf("szTmpsize=%d\n",szTmpsize);
write(fd, szTmp, szTmpsize); write(fd, szTmp, szTmpsize);
@ -1312,17 +1311,18 @@ UINT32 sf_create_dailyreport_file(void)
//printf("szTmpsize=%d\n",szTmpsize); //printf("szTmpsize=%d\n",szTmpsize);
write(fd, szTmp2, szTmpsize); write(fd, szTmp2, szTmpsize);
file_path = sf_root_path_strcat(SF_ERROR_CODE); char *err_code_path = sf_root_path_strcat(SF_ERROR_CODE);
if(file_path == NULL) if(err_code_path == NULL)
{ {
free(file_path); free(err_code_path);
return SF_FAILURE; return SF_FAILURE;
} }
if(sf_file_IsExsit(file_path) == SF_TRUE){ if(sf_file_IsExsit(err_code_path) == SF_TRUE){
size = sf_get_file_size((UINT8 *)file_path); size = sf_get_file_size((UINT8 *)err_code_path);
fd1 = open(file_path, O_RDONLY, S_IRUSR | S_IWUSR); fd1 = open(err_code_path, O_RDONLY, S_IRUSR | S_IWUSR);
if(fd1) if(fd1)
{ {
free(err_code_path);
//size = sp5kFsFileSizeGet(fd1); //size = sp5kFsFileSizeGet(fd1);
buf = malloc(size); buf = malloc(size);
@ -1346,7 +1346,7 @@ UINT32 sf_create_dailyreport_file(void)
ret = SUCCESS; ret = SUCCESS;
close(fd); close(fd);
} }
free(file_path);
return ret; return ret;
} }
@ -1376,44 +1376,43 @@ UINT32 sf_create_low_power_warn_file(void)
return ret; return ret;
} }
char *file_path = NULL; char *thumb_dir = sf_root_path_strcat(SF_THUMB_DIR);
file_path = sf_root_path_strcat(SF_THUMB_DIR); if(thumb_dir == NULL)
if(file_path == NULL)
{ {
free(file_path); free(thumb_dir);
return SF_FAILURE; return SF_FAILURE;
} }
/*Avoid New Card*/ /*Avoid New Card*/
if (access(file_path, F_OK) == -1) { if (access(thumb_dir, F_OK) == -1) {
printf("%s directory does not exist. Creating...\n", file_path); printf("%s directory does not exist. Creating...\n", thumb_dir);
if (mkdir(file_path, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) == -1) { if (mkdir(thumb_dir, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) == -1) {
//perror("mkdir() error"); //perror("mkdir() error");
} else { } else {
printf("%s directory created.\n", file_path); printf("%s directory created.\n", thumb_dir);
} }
} else { } else {
printf("%s directory exists.\n", file_path); printf("%s directory exists.\n", thumb_dir);
} }
free(file_path); free(thumb_dir);
file_path = sf_root_path_strcat(SF_LOW_POWER_WARN_FILENAME); char *lp_path = sf_root_path_strcat(SF_LOW_POWER_WARN_FILENAME);
if(file_path == NULL) if(lp_path == NULL)
{ {
free(file_path); free(lp_path);
return SF_FAILURE; return SF_FAILURE;
} }
if(sf_file_IsExsit(file_path) == SF_TRUE){ if(sf_file_IsExsit(lp_path) == SF_TRUE){
sf_file_remove(file_path); sf_file_remove(lp_path);
} }
fd = open(file_path, O_APPEND | O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR); fd = open(lp_path, O_APPEND | O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);
if(!fd) if(!fd)
{ {
fd = open(file_path, O_APPEND | O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR); fd = open(lp_path, O_APPEND | O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);
} }
if(fd) if(fd)
@ -1443,7 +1442,7 @@ UINT32 sf_create_low_power_warn_file(void)
if(ret <0) if(ret <0)
{ {
close(fd); close(fd);
sf_file_remove(file_path); sf_file_remove(lp_path);
printf("write low power warn file failed!,ret:%d\n",ret); printf("write low power warn file failed!,ret:%d\n",ret);
ret = FAIL; ret = FAIL;
} }
@ -1454,7 +1453,7 @@ UINT32 sf_create_low_power_warn_file(void)
ret = SUCCESS; ret = SUCCESS;
} }
} }
free(file_path); free(lp_path);
return ret; return ret;
} }

View File

@ -453,13 +453,39 @@ SINT32 sf_upgrade_ota_init(void)
MLOGI("filename = [%s]\n",stOtaAttrs.filename); MLOGI("filename = [%s]\n",stOtaAttrs.filename);
if(upgrade_ota_file_IsExsit(SF_OTA_UPGRADE_FILE_PATH) == SF_TRUE) char *upgrade_file_path = sf_root_path_strcat(SF_OTA_UPGRADE_FILE_PATH);
sf_file_remove(SF_OTA_UPGRADE_FILE_PATH); if(upgrade_file_path == NULL)
if(upgrade_ota_file_IsExsit(OTA_CFG_FILE_PATH) == SF_TRUE) {
sf_file_remove(OTA_CFG_FILE_PATH); free(upgrade_file_path);
if(upgrade_ota_file_IsExsit(OTAFILE_PATH) == SF_TRUE) return SF_FAILURE;
sf_file_remove(OTAFILE_PATH); }
char *cfg_file_path = sf_root_path_strcat(OTA_CFG_FILE_PATH);
if(cfg_file_path == NULL)
{
free(cfg_file_path);
return SF_FAILURE;
}
char *ota_file_path = sf_root_path_strcat(OTAFILE_PATH);
if(ota_file_path == NULL)
{
free(ota_file_path);
return SF_FAILURE;
}
if(upgrade_ota_file_IsExsit(upgrade_file_path) == SF_TRUE) {
sf_file_remove(upgrade_file_path);
}
if(upgrade_ota_file_IsExsit(cfg_file_path) == SF_TRUE) {
sf_file_remove(cfg_file_path);
}
if(upgrade_ota_file_IsExsit(ota_file_path) == SF_TRUE) {
sf_file_remove(ota_file_path);
}
free(upgrade_file_path);
free(cfg_file_path);
free(ota_file_path);
return SF_SUCCESS; return SF_SUCCESS;
} }

View File

@ -739,7 +739,7 @@ void appCreatThumbList(S8 *fileName)//start file name example: 10010032.JPG
if(strg_path == NULL) if(strg_path == NULL)
{ {
free(strg_path); free(strg_path);
return SF_FAILURE; return;
} }
if(fileName != NULL && fileName[0] != '\0' && fileName[0] != '0' && (strstr((char *)fileName, SF_DCF_EXT_MOV) || strstr((char *)fileName, SF_DCF_EXT_PHOTO))) if(fileName != NULL && fileName[0] != '\0' && fileName[0] != '0' && (strstr((char *)fileName, SF_DCF_EXT_MOV) || strstr((char *)fileName, SF_DCF_EXT_PHOTO)))