提交 3c8cbb52 编写于 作者: J jchen

8014098: Better profile validation

Reviewed-by: bae, mschoene, prr
上级 8b5fd0b3
......@@ -1074,6 +1074,27 @@ cmsHPROFILE CMSEXPORT cmsOpenProfileFromMem(const void* MemPtr, cmsUInt32Number
}
static
cmsBool SanityCheck(_cmsICCPROFILE* profile)
{
cmsIOHANDLER* io = profile->IOhandler;
if (!io) {
return FALSE;
}
if (!io->Seek ||
!(io->Seek==NULLSeek || io->Seek==MemorySeek || io->Seek==FileSeek))
{
return FALSE;
}
if (!io->Read ||
!(io->Read==NULLRead || io->Read==MemoryRead || io->Read==FileRead))
{
return FALSE;
}
return TRUE;
}
// Dump tag contents. If the profile is being modified, untouched tags are copied from FileOrig
static
......@@ -1087,6 +1108,7 @@ cmsBool SaveTags(_cmsICCPROFILE* Icc, _cmsICCPROFILE* FileOrig)
cmsTagTypeSignature TypeBase;
cmsTagTypeHandler* TypeHandler;
if (!SanityCheck(FileOrig)) return FALSE;
for (i=0; i < Icc -> TagCount; i++) {
......@@ -1292,8 +1314,8 @@ cmsBool CMSEXPORT cmsSaveProfileToMem(cmsHPROFILE hProfile, void *MemPtr, cmsUIn
// Should we just calculate the needed space?
if (MemPtr == NULL) {
*BytesNeeded = cmsSaveProfileToIOhandler(hProfile, NULL);
return TRUE;
*BytesNeeded = cmsSaveProfileToIOhandler(hProfile, NULL);
return (*BytesNeeded == 0 ? FALSE : TRUE);
}
// That is a real write operation
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册