From b537fb8c2f2a3ae861b58f2ae60e2d8e000abd47 Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Wed, 17 Apr 2013 13:51:25 +0200 Subject: [PATCH] treat overlong utf8 sequences as error --- ext/repo_rpmdb.c | 8 ++++---- ext/repo_rpmdb_pubkey.c | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) 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 -- 2.47.2