diff options
author | Marti Maria <marti.maria@littlecms.com> | 2020-06-19 10:26:52 +0200 |
---|---|---|
committer | Marti Maria <marti.maria@littlecms.com> | 2020-06-19 10:26:52 +0200 |
commit | a483dfa260e86fc1de7c917f2e2575db9c27d9a6 (patch) | |
tree | c782564e449471ee239ae9f6a966a99c7cfdc8d1 /src/cmsio0.c | |
parent | 17eb080324a9f16e0e7ab37bbcda7ae42b946294 (diff) | |
download | lcms2-a483dfa260e86fc1de7c917f2e2575db9c27d9a6.tar.gz |
fixed a segfault when copyright MLU holds only one empty string
fixed a segfault when copyright MLU holds only one empty string
Diffstat (limited to 'src/cmsio0.c')
-rw-r--r-- | src/cmsio0.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/cmsio0.c b/src/cmsio0.c index 61ca7a9..e1685ba 100644 --- a/src/cmsio0.c +++ b/src/cmsio0.c @@ -1203,25 +1203,28 @@ cmsBool SaveTags(_cmsICCPROFILE* Icc, _cmsICCPROFILE* FileOrig) // In this case a blind copy of the block data is performed if (FileOrig != NULL && Icc -> TagOffsets[i]) { - cmsUInt32Number TagSize = FileOrig -> TagSizes[i]; - cmsUInt32Number TagOffset = FileOrig -> TagOffsets[i]; - void* Mem; + if (FileOrig->IOhandler != NULL) + { + cmsUInt32Number TagSize = FileOrig->TagSizes[i]; + cmsUInt32Number TagOffset = FileOrig->TagOffsets[i]; + void* Mem; - if (!FileOrig ->IOhandler->Seek(FileOrig ->IOhandler, TagOffset)) return FALSE; + if (!FileOrig->IOhandler->Seek(FileOrig->IOhandler, TagOffset)) return FALSE; - Mem = _cmsMalloc(Icc ->ContextID, TagSize); - if (Mem == NULL) return FALSE; + Mem = _cmsMalloc(Icc->ContextID, TagSize); + if (Mem == NULL) return FALSE; - if (FileOrig ->IOhandler->Read(FileOrig->IOhandler, Mem, TagSize, 1) != 1) return FALSE; - if (!io ->Write(io, TagSize, Mem)) return FALSE; - _cmsFree(Icc ->ContextID, Mem); + if (FileOrig->IOhandler->Read(FileOrig->IOhandler, Mem, TagSize, 1) != 1) return FALSE; + if (!io->Write(io, TagSize, Mem)) return FALSE; + _cmsFree(Icc->ContextID, Mem); - Icc -> TagSizes[i] = (io ->UsedSpace - Begin); + Icc->TagSizes[i] = (io->UsedSpace - Begin); - // Align to 32 bit boundary. - if (! _cmsWriteAlignment(io)) - return FALSE; + // Align to 32 bit boundary. + if (!_cmsWriteAlignment(io)) + return FALSE; + } } continue; |