summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarti Maria <marti.maria@littlecms.com>2021-01-20 19:55:02 +0100
committerMarti Maria <marti.maria@littlecms.com>2021-01-20 19:55:02 +0100
commit82edde9232fce92f5769cdda2969c5b770a31892 (patch)
tree57b7e06f03ad213f0e0de45f425289e36cad7b32
parenta0fc38ddd55a0341dafa7414ac624c1f09271401 (diff)
downloadlcms2-82edde9232fce92f5769cdda2969c5b770a31892.tar.gz
prevent segfaults when NULL country or language code
Add codeguard. Thanks to Christian Schmitz for pointing it out
-rw-r--r--src/cmsnamed.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/cmsnamed.c b/src/cmsnamed.c
index 3796c39..c0595dd 100644
--- a/src/cmsnamed.c
+++ b/src/cmsnamed.c
@@ -180,12 +180,16 @@ cmsBool AddMLUBlock(cmsMLU* mlu, cmsUInt32Number size, const wchar_t *Block,
// Convert from a 3-char code to a cmsUInt16Number. It is done in this way because some
// compilers don't properly align beginning of strings
-
static
cmsUInt16Number strTo16(const char str[3])
{
- const cmsUInt8Number* ptr8 = (const cmsUInt8Number*)str;
- cmsUInt16Number n = (cmsUInt16Number)(((cmsUInt16Number)ptr8[0] << 8) | ptr8[1]);
+ const cmsUInt8Number* ptr8;
+ cmsUInt16Number n;
+
+ // For non-existent strings
+ if (str == NULL) return 0;
+ ptr8 = (const cmsUInt8Number*)str;
+ n = (cmsUInt16Number)(((cmsUInt16Number)ptr8[0] << 8) | ptr8[1]);
return n;
}