Verify that the code in CJK UNIFIED IDEOGRAPH- actually denotes an ideograph.
diff --git a/Modules/unicodedata.c b/Modules/unicodedata.c
index 502b5bd..c5ba6fc 100644
--- a/Modules/unicodedata.c
+++ b/Modules/unicodedata.c
@@ -581,6 +581,15 @@
 };
 
 static int
+is_unified_ideograph(Py_UCS4 code)
+{
+    return (
+        (0x3400 <= code && code <= 0x4DB5) || /* CJK Ideograph Extension A */
+        (0x4E00 <= code && code <= 0x9FA5) || /* CJK Ideograph */
+        (0x20000 <= code && code <= 0x2A6D6));/* CJK Ideograph Extension B */
+}
+
+static int
 _getucname(Py_UCS4 code, char* buffer, int buflen)
 {
     int offset;
@@ -610,9 +619,7 @@
 	return 1;
     }
 
-    if ((0x3400 <= code && code <= 0x4DB5) ||  /* CJK Ideograph Extension A */
-        (0x4E00 <= code && code <= 0x9FA5) ||  /* CJK Ideograph */
-        (0x20000 <= code && code <= 0x2A6D6)) {/* CJK Ideograph Extension B */
+    if (is_unified_ideograph(code)) {
         if (buflen < 28)
             /* Worst case: CJK UNIFIED IDEOGRAPH-20000 */
             return 0;
@@ -743,6 +750,8 @@
                 return 0;
             name++;
         }
+        if (!is_unified_ideograph(v))
+            return 0;
         *code = v;
         return 1;
     }