Commit d9f37e66 authored by Tom Lane's avatar Tom Lane

Add checks for valid multibyte character length in UtfToLocal, LocalToUtf.

This is mainly to suppress "uninitialized variable" warnings from very
recent versions of gcc.  But it seems like a good robustness thing anyway,
not to mention that we might someday decide to support 6-byte UTF8.

Per report from Karol Trzcionka.  No back-patch since there's no reason
at the moment to think this is more than cosmetic.
parent e2bd9049
......@@ -382,6 +382,11 @@ UtfToLocal(const unsigned char *utf, unsigned char *iso,
iutf |= *utf++ << 8;
iutf |= *utf++;
}
else
{
elog(ERROR, "unsupported character length %d", l);
iutf = 0; /* keep compiler quiet */
}
/*
* first, try with combined map if possible
......@@ -437,6 +442,11 @@ UtfToLocal(const unsigned char *utf, unsigned char *iso,
iutf |= *utf++ << 8;
iutf |= *utf++;
}
else
{
elog(ERROR, "unsupported character length %d", l);
iutf = 0; /* keep compiler quiet */
}
cutf[1] = iutf;
cp = bsearch(cutf, cmap, size2,
......@@ -546,6 +556,11 @@ LocalToUtf(const unsigned char *iso, unsigned char *utf,
iiso |= *iso++ << 8;
iiso |= *iso++;
}
else
{
elog(ERROR, "unsupported character length %d", l);
iiso = 0; /* keep compiler quiet */
}
p = bsearch(&iiso, map, size1,
sizeof(pg_local_to_utf), compare2);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment