mirror of
https://github.com/postgres/postgres.git
synced 2025-05-21 00:02:53 -04:00
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.
This commit is contained in:
parent
e2bd904955
commit
d9f37e6661
@ -382,6 +382,11 @@ UtfToLocal(const unsigned char *utf, unsigned char *iso,
|
|||||||
iutf |= *utf++ << 8;
|
iutf |= *utf++ << 8;
|
||||||
iutf |= *utf++;
|
iutf |= *utf++;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
elog(ERROR, "unsupported character length %d", l);
|
||||||
|
iutf = 0; /* keep compiler quiet */
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* first, try with combined map if possible
|
* first, try with combined map if possible
|
||||||
@ -437,6 +442,11 @@ UtfToLocal(const unsigned char *utf, unsigned char *iso,
|
|||||||
iutf |= *utf++ << 8;
|
iutf |= *utf++ << 8;
|
||||||
iutf |= *utf++;
|
iutf |= *utf++;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
elog(ERROR, "unsupported character length %d", l);
|
||||||
|
iutf = 0; /* keep compiler quiet */
|
||||||
|
}
|
||||||
|
|
||||||
cutf[1] = iutf;
|
cutf[1] = iutf;
|
||||||
cp = bsearch(cutf, cmap, size2,
|
cp = bsearch(cutf, cmap, size2,
|
||||||
@ -546,6 +556,11 @@ LocalToUtf(const unsigned char *iso, unsigned char *utf,
|
|||||||
iiso |= *iso++ << 8;
|
iiso |= *iso++ << 8;
|
||||||
iiso |= *iso++;
|
iiso |= *iso++;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
elog(ERROR, "unsupported character length %d", l);
|
||||||
|
iiso = 0; /* keep compiler quiet */
|
||||||
|
}
|
||||||
|
|
||||||
p = bsearch(&iiso, map, size1,
|
p = bsearch(&iiso, map, size1,
|
||||||
sizeof(pg_local_to_utf), compare2);
|
sizeof(pg_local_to_utf), compare2);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user