summaryrefslogtreecommitdiff
path: root/src/cmsio0.c
diff options
context:
space:
mode:
authorMarti Maria <marti.maria@littlecms.com>2020-06-19 10:26:52 +0200
committerMarti Maria <marti.maria@littlecms.com>2020-06-19 10:26:52 +0200
commita483dfa260e86fc1de7c917f2e2575db9c27d9a6 (patch)
treec782564e449471ee239ae9f6a966a99c7cfdc8d1 /src/cmsio0.c
parent17eb080324a9f16e0e7ab37bbcda7ae42b946294 (diff)
downloadlcms2-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.c29
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;