}
fseek(hFile1, 0, SEEK_END);
- auto size1 = ftell(hFile1);
+ auto size1 = static_cast<long long>(ftell(hFile1));
auto offset = t_FileHeader.Offset1 + 35 + t_DRMHeader.XmlSize;
fseek(hFile1, offset, SEEK_SET);
+ if (size1 < offset) {
+ DRM_TAPPS_EXCEPTION("Invalid offset... offset is bigger than file size");
+ fclose(hFile1);
+ fclose(hFile2);
+ TADC_MEMFree_FileHeader(&t_FileHeader);
+ TADC_MEMFree_DRMHeader(&t_DRMHeader);
+ TADC_MEMFree_RO(&t_RO);
+ TADC_IF_Free(pReadBuf);
+ return FALSE;
+ }
+
auto size2 = size1 - offset; //plain file size
auto BlockCnt = (size2 / 512) + ((size2 % 512) ? 1 : 0);
}
fseek(hFile1, 0, SEEK_END);
- auto size1 = ftell(hFile1);
+ auto size1 = static_cast<long long>(ftell(hFile1));
auto offset = t_FileHeader.Offset1 + 35 + t_DRMHeader.XmlSize;
fseek(hFile1, offset, SEEK_SET);
+ if (size1 < offset) {
+ DRM_TAPPS_EXCEPTION("Invalid offset... offset is bigger than file size");
+ fclose(hFile1);
+ fclose(hFile2);
+ TADC_MEMFree_FileHeader(&t_FileHeader);
+ TADC_MEMFree_DRMHeader(&t_DRMHeader);
+ TADC_IF_Free(pReadBuf);
+ return FALSE;
+ }
+
auto size2 = size1 - offset; //plain file size
auto BlockCnt = (size2 / 512) + ((size2 % 512) ? 1 : 0);