return E_SS_FAILURE;
}
-int SS_CalculateFileSha(char *filename, int filesize, FileInfo * file)
+int SS_CalculateFileSha(char *filename, long int filesize, FileInfo * file)
{
FILE *fp = NULL;
int ulResult = S_SS_SUCCESS;
- int chunk = 20*1024*1024;
+ long int chunk = 20*1024*1024;
char buf[256];
fp = fopen(filename, "rb");
uint8_t target_sha1[SHA_DIGEST_SIZE] = { 0, };
char cmd[512] = { 0, };
char buf[256];
- int udelta_size = 0;
+ long int udelta_size = 0;
int ulResult = S_SS_SUCCESS;
if (stat(filename, &file.st) != 0) {
sha1trg = strtok_r(NULL, SS_TOEKN_COLON, &saveptr);
if (signature && sha1trg && delta_size) {
- udelta_size = atoi(delta_size);
- if (udelta_size < 0)
- LOGE("Invalid udelta_size %d (%s)\n", udelta_size, delta_size);
- LOGL(LOG_SSENGINE, "delta_size %d sha1trg %s\n", udelta_size, sha1trg);
+ udelta_size = strtol(delta_size, NULL, 10);
+
+ if (udelta_size <= 0) {
+ LOGE("Invalid udelta_size %ld (%s)\n", udelta_size, delta_size);
+ ulResult = E_SS_FAILURE;
+ goto Cleanup;
+ }
+ else if (udelta_size >= __INT_MAX__) {
+ LOGE("Too big udelta_size %ld (%s)\n", udelta_size, delta_size);
+ ulResult = E_SS_FAILURE;
+ goto Cleanup;
+ }
+
+ LOGL(LOG_SSENGINE, "delta_size %ld sha1trg %s\n", udelta_size, sha1trg);
} else {
LOGE("Could not parse signature [%s]\n", line);
ulResult = E_SS_FAILURE;
change_type = strtok_r(line, SS_TOEKN_COLON, &saveptr);
file_type = strtok_r(NULL, SS_TOEKN_COLON, &saveptr);
+ if (!file_type) {
+ LOGE("Unexpected null in strtok_r");
+ goto CleanUp;
+ }
if (change_type && strcmp(change_type, SS_STRING_MOVE) == 0) { // && strcmp(file_type,"TPK") == 0){
source_name = strtok_r(NULL, SS_TOEKN_COLON, &saveptr);
ua_dataSS->update_delta->ua_patch_path);
if (retval == E_SS_FAILURE) // ONLY test purpose, should enable this
goto CleanUp;
- if (ua_dataSS->ua_operation == UI_OP_SCOUT) {
- SS_UpdateUIProgress(ua_dataSS, ulPatchCount, 0);
- }
+
+ if (ua_dataSS->ua_operation == UI_OP_SCOUT) {
+ SS_UpdateUIProgress(ua_dataSS, ulPatchCount, 0);
+ }
} else if (change_type && strcmp(change_type, SS_STRING_DIFF) == 0) { // && strcmp(file_type,"TPK") == 0){
source_name = strtok_r(NULL, SS_TOEKN_COLON, &saveptr);
target_name = strtok_r(NULL, SS_TOEKN_COLON, &saveptr);
LOGE("File Name length Limitation Error File:[%s]\n", patch_name);
goto CleanUp;
}
- if (ua_dataSS->ua_operation == UI_OP_SCOUT) {
- SS_UpdateUIProgress(ua_dataSS, ulPatchCount, 0);
- }
+
+ if (ua_dataSS->ua_operation == UI_OP_SCOUT) {
+ SS_UpdateUIProgress(ua_dataSS, ulPatchCount, 0);
+ }
} else {
SS_SetUpgradeState(E_SS_FSFAILEDTOPARSEDELTAINFO);
LOGE("Patch Name format Error File\n");
}
change_type = strtok_r(line, SS_TOEKN_COLON, &saveptr);
+ if (!change_type) {
+ LOGE("Unexpected null in strtok_r");
+ goto CleanUp;
+ }
file_type = strtok_r(NULL, SS_TOEKN_COLON, &saveptr);
if (file_type && strcmp(file_type, SS_STRING_REG) == 0) {