From: Michael Schroeder Date: Wed, 17 Apr 2013 11:51:25 +0000 (+0200) Subject: treat overlong utf8 sequences as error X-Git-Tag: BASE-SuSE-Code-12_3-Branch~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b537fb8c2f2a3ae861b58f2ae60e2d8e000abd47;p=thirdparty%2Flibsolv.git treat overlong utf8 sequences as error --- diff --git a/ext/repo_rpmdb.c b/ext/repo_rpmdb.c index e84b8ec7..c3fa5ec8 100644 --- a/ext/repo_rpmdb.c +++ b/ext/repo_rpmdb.c @@ -372,13 +372,13 @@ setutf8string(Repodata *repodata, Id handle, Id tag, const char *str) { /* check for overlong sequences */ if ((c & 0x820823e0) == 0x80000000) - c = 0xfdffffff; + break; else if ((c & 0x020821f0) == 0x02000000) - c = 0xfff7ffff; + break; else if ((c & 0x000820f8) == 0x00080000) - c = 0xffffd000; + break; else if ((c & 0x0000207c) == 0x00002000) - c = 0xffffff70; + break; } } else diff --git a/ext/repo_rpmdb_pubkey.c b/ext/repo_rpmdb_pubkey.c index 4920650a..3691332b 100644 --- a/ext/repo_rpmdb_pubkey.c +++ b/ext/repo_rpmdb_pubkey.c @@ -61,13 +61,13 @@ setutf8string(Repodata *repodata, Id handle, Id tag, const char *str) { /* check for overlong sequences */ if ((c & 0x820823e0) == 0x80000000) - c = 0xfdffffff; + break; else if ((c & 0x020821f0) == 0x02000000) - c = 0xfff7ffff; + break; else if ((c & 0x000820f8) == 0x00080000) - c = 0xffffd000; + break; else if ((c & 0x0000207c) == 0x00002000) - c = 0xffffff70; + break; } } else