unicodedata_decomposition():  sprintf -> PyOS_snprintf.
diff --git a/Modules/unicodedata.c b/Modules/unicodedata.c
index 4711123..36c96e4 100644
--- a/Modules/unicodedata.c
+++ b/Modules/unicodedata.c
@@ -227,7 +227,7 @@
                              (code&((1<<DECOMP_SHIFT)-1))];
     }
 
-    /* high byte is of hex bytes (usually one or two), low byte
+    /* high byte is number of hex bytes (usually one or two), low byte
        is prefix code (from*/
     count = decomp_data[index] >> 8;
 
@@ -241,7 +241,9 @@
     while (count-- > 0) {
         if (i)
             decomp[i++] = ' ';
-        sprintf(decomp + i, "%04X", decomp_data[++index]);
+        assert((size_t)i < sizeof(decomp));
+        PyOS_snprintf(decomp + i, sizeof(decomp) - i, "%04X",
+                      decomp_data[++index]);
         i += strlen(decomp + i);
     }