diff --git a/Objects/object.c b/Objects/object.c
index ab10e3e..265ab9b 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -236,7 +236,7 @@
 			return NULL;
 		if (!PyString_Check(res)) {
 			PyErr_Format(PyExc_TypeError,
-				     "__repr__ returned non-string (type %s)",
+				     "__repr__ returned non-string (type %.200s)",
 				     res->ob_type->tp_name);
 			Py_DECREF(res);
 			return NULL;
@@ -273,7 +273,7 @@
 		return NULL;
 	if (!PyString_Check(res)) {
 		PyErr_Format(PyExc_TypeError,
-			     "__str__ returned non-string (type %s)",
+			     "__str__ returned non-string (type %.200s)",
 			     res->ob_type->tp_name);
 		Py_DECREF(res);
 		return NULL;
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index e4bbcff..76fb175 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -365,7 +365,7 @@
         goto onError;
     if (!PyUnicode_Check(unicode)) {
         PyErr_Format(PyExc_TypeError,
-                     "decoder did not return an unicode object (type=%s)",
+                     "decoder did not return an unicode object (type=%.400s)",
                      unicode->ob_type->tp_name);
         Py_DECREF(unicode);
         goto onError;
@@ -416,7 +416,7 @@
     /* XXX Should we really enforce this ? */
     if (!PyString_Check(v)) {
         PyErr_Format(PyExc_TypeError,
-                     "encoder did not return a string object (type=%s)",
+                     "encoder did not return a string object (type=%.400s)",
                      v->ob_type->tp_name);
         Py_DECREF(v);
         goto onError;
@@ -484,7 +484,7 @@
     if ((errors == NULL) ||
         (strcmp(errors,"strict") == 0)) {
         PyErr_Format(PyExc_UnicodeError,
-                     "UTF-8 decoding error: %s",
+                     "UTF-8 decoding error: %.400s",
                      details);
         return -1;
     }
@@ -500,7 +500,7 @@
     }
     else {
         PyErr_Format(PyExc_ValueError,
-                     "UTF-8 decoding error; unknown error handling code: %s",
+                     "UTF-8 decoding error; unknown error handling code: %.400s",
                      errors);
         return -1;
     }
@@ -607,7 +607,7 @@
     if ((errors == NULL) ||
 	(strcmp(errors,"strict") == 0)) {
 	PyErr_Format(PyExc_UnicodeError,
-		     "UTF-8 encoding error: %s",
+		     "UTF-8 encoding error: %.400s",
 		     details);
 	return -1;
     }
@@ -622,7 +622,7 @@
     else {
 	PyErr_Format(PyExc_ValueError,
 		     "UTF-8 encoding error; "
-		     "unknown error handling code: %s",
+		     "unknown error handling code: %.400s",
 		     errors);
 	return -1;
     }
@@ -728,7 +728,7 @@
     if ((errors == NULL) ||
         (strcmp(errors,"strict") == 0)) {
         PyErr_Format(PyExc_UnicodeError,
-                     "UTF-16 decoding error: %s",
+                     "UTF-16 decoding error: %.400s",
                      details);
         return -1;
     }
@@ -744,7 +744,7 @@
     }
     else {
         PyErr_Format(PyExc_ValueError,
-                     "UTF-16 decoding error; unknown error handling code: %s",
+                     "UTF-16 decoding error; unknown error handling code: %.400s",
                      errors);
         return -1;
     }
@@ -918,7 +918,7 @@
     if ((errors == NULL) ||
         (strcmp(errors,"strict") == 0)) {
         PyErr_Format(PyExc_UnicodeError,
-                     "Unicode-Escape decoding error: %s",
+                     "Unicode-Escape decoding error: %.400s",
                      details);
         return -1;
     }
@@ -932,7 +932,7 @@
     else {
         PyErr_Format(PyExc_ValueError,
                      "Unicode-Escape decoding error; "
-                     "unknown error handling code: %s",
+                     "unknown error handling code: %.400s",
                      errors);
         return -1;
     }
@@ -1296,7 +1296,7 @@
     if ((errors == NULL) ||
 	(strcmp(errors,"strict") == 0)) {
 	PyErr_Format(PyExc_UnicodeError,
-		     "Latin-1 encoding error: %s",
+		     "Latin-1 encoding error: %.400s",
 		     details);
 	return -1;
     }
@@ -1310,7 +1310,7 @@
     else {
 	PyErr_Format(PyExc_ValueError,
 		     "Latin-1 encoding error; "
-		     "unknown error handling code: %s",
+		     "unknown error handling code: %.400s",
 		     errors);
 	return -1;
     }
@@ -1366,7 +1366,7 @@
     if ((errors == NULL) ||
 	(strcmp(errors,"strict") == 0)) {
 	PyErr_Format(PyExc_UnicodeError,
-		     "ASCII decoding error: %s",
+		     "ASCII decoding error: %.400s",
 		     details);
 	return -1;
     }
@@ -1381,7 +1381,7 @@
     else {
 	PyErr_Format(PyExc_ValueError,
 		     "ASCII decoding error; "
-		     "unknown error handling code: %s",
+		     "unknown error handling code: %.400s",
 		     errors);
 	return -1;
     }
@@ -1429,7 +1429,7 @@
     if ((errors == NULL) ||
 	(strcmp(errors,"strict") == 0)) {
 	PyErr_Format(PyExc_UnicodeError,
-		     "ASCII encoding error: %s",
+		     "ASCII encoding error: %.400s",
 		     details);
 	return -1;
     }
@@ -1443,7 +1443,7 @@
     else {
 	PyErr_Format(PyExc_ValueError,
 		     "ASCII encoding error; "
-		     "unknown error handling code: %s",
+		     "unknown error handling code: %.400s",
 		     errors);
 	return -1;
     }
@@ -1558,7 +1558,7 @@
     if ((errors == NULL) ||
 	(strcmp(errors,"strict") == 0)) {
 	PyErr_Format(PyExc_UnicodeError,
-		     "charmap decoding error: %s",
+		     "charmap decoding error: %.400s",
 		     details);
 	return -1;
     }
@@ -1573,7 +1573,7 @@
     else {
 	PyErr_Format(PyExc_ValueError,
 		     "charmap decoding error; "
-		     "unknown error handling code: %s",
+		     "unknown error handling code: %.400s",
 		     errors);
 	return -1;
     }
@@ -1674,7 +1674,7 @@
     if ((errors == NULL) ||
 	(strcmp(errors,"strict") == 0)) {
 	PyErr_Format(PyExc_UnicodeError,
-		     "charmap encoding error: %s",
+		     "charmap encoding error: %.400s",
 		     details);
 	return -1;
     }
@@ -1689,7 +1689,7 @@
     else {
 	PyErr_Format(PyExc_ValueError,
 		     "charmap encoding error; "
-		     "unknown error handling code: %s",
+		     "unknown error handling code: %.400s",
 		     errors);
 	return -1;
     }
@@ -1806,7 +1806,7 @@
     if ((errors == NULL) ||
 	(strcmp(errors,"strict") == 0)) {
 	PyErr_Format(PyExc_UnicodeError,
-		     "translate error: %s",
+		     "translate error: %.400s",
 		     details);
 	return -1;
     }
@@ -1821,7 +1821,7 @@
     else {
 	PyErr_Format(PyExc_ValueError,
 		     "translate error; "
-		     "unknown error handling code: %s",
+		     "unknown error handling code: %.400s",
 		     errors);
 	return -1;
     }
