diff --git a/Modules/structmodule.c b/Modules/structmodule.c
index c253a76..1b38c67 100644
--- a/Modules/structmodule.c
+++ b/Modules/structmodule.c
@@ -477,6 +477,26 @@
 	long x;
 	if (get_long(v, &x) < 0)
 		return -1;
+	if (x < -128 || x > 127){
+		PyErr_SetString(StructError,
+				"byte format requires -128<=number<=127");
+		return -1;
+	}
+	*p = (char)x;
+	return 0;
+}
+
+static int
+np_ubyte(char *p, PyObject *v, const formatdef *f)
+{
+	long x;
+	if (get_long(v, &x) < 0)
+		return -1;
+	if (x < 0 || x > 255){
+		PyErr_SetString(StructError,
+				"ubyte format requires 0<=number<=255");
+		return -1;
+	}
 	*p = (char)x;
 	return 0;
 }
@@ -499,11 +519,31 @@
 	long x;
 	if (get_long(v, &x) < 0)
 		return -1;
+	if (x < -32768 || x > 32767){
+		PyErr_SetString(StructError,
+				"short format requires -32768<=number<=32767");
+		return -1;
+	}
 	* (short *)p = (short)x;
 	return 0;
 }
 
 static int
+np_ushort(char *p, PyObject *v, const formatdef *f)
+{
+	long x;
+	if (get_long(v, &x) < 0)
+		return -1;
+	if (x < 0 || x > 65535){
+		PyErr_SetString(StructError,
+				"short format requires 0<=number<=65535");
+		return -1;
+	}
+	* (unsigned short *)p = (unsigned short)x;
+	return 0;
+}
+
+static int
 np_int(char *p, PyObject *v, const formatdef *f)
 {
 	long x;
@@ -587,12 +627,12 @@
 static formatdef native_table[] = {
 	{'x',	sizeof(char),	0,		NULL},
 	{'b',	sizeof(char),	0,		nu_byte,	np_byte},
-	{'B',	sizeof(char),	0,		nu_ubyte,	np_byte},
+	{'B',	sizeof(char),	0,		nu_ubyte,	np_ubyte},
 	{'c',	sizeof(char),	0,		nu_char,	np_char},
 	{'s',	sizeof(char),	0,		NULL},
 	{'p',	sizeof(char),	0,		NULL},
 	{'h',	sizeof(short),	SHORT_ALIGN,	nu_short,	np_short},
-	{'H',	sizeof(short),	SHORT_ALIGN,	nu_ushort,	np_short},
+	{'H',	sizeof(short),	SHORT_ALIGN,	nu_ushort,	np_ushort},
 	{'i',	sizeof(int),	INT_ALIGN,	nu_int,		np_int},
 	{'I',	sizeof(int),	INT_ALIGN,	nu_uint,	np_uint},
 	{'l',	sizeof(long),	LONG_ALIGN,	nu_long,	np_long},
