diff --git a/Lib/pickle.py b/Lib/pickle.py
index 00f5834..74748f8 100644
--- a/Lib/pickle.py
+++ b/Lib/pickle.py
@@ -47,6 +47,10 @@
                       "2.0",            # Protocol 2
                       ]                 # Old format versions we can read
 
+# Keep in synch with cPickle.  This is the highest protocol number we
+# know how to read.
+HIGHEST_PROTOCOL = 2
+
 # Why use struct.pack() for pickling but marshal.loads() for
 # unpickling?  struct.pack() is 40% faster than marshal.dumps(), but
 # marshal.loads() is twice as fast as struct.unpack()!
@@ -200,9 +204,9 @@
         if protocol is None:
             protocol = 0
         if protocol < 0:
-            protocol = 2
-        elif protocol not in (0, 1, 2):
-            raise ValueError, "pickle protocol must be 0, 1 or 2"
+            protocol = HIGHEST_PROTOCOL
+        elif not 0 <= protocol <= HIGHEST_PROTOCOL:
+            raise ValueError("pickle protocol must be <= %d" % HIGHEST_PROTOCOL)
         self.write = file.write
         self.memo = {}
         self.proto = int(protocol)
diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py
index 734f2a3..8479d43 100644
--- a/Lib/test/pickletester.py
+++ b/Lib/test/pickletester.py
@@ -1,5 +1,6 @@
 import unittest
 import pickle
+import cPickle
 import pickletools
 import copy_reg
 
@@ -7,8 +8,9 @@
 
 # Tests that try a number of pickle protocols should have a
 #     for proto in protocols:
-# kind of outer loop.  Bump the 3 to 4 if/when protocol 3 is invented.
-protocols = range(3)
+# kind of outer loop.
+assert pickle.HIGHEST_PROTOCOL == cPickle.HIGHEST_PROTOCOL == 2
+protocols = range(pickle.HIGHEST_PROTOCOL + 1)
 
 
 # Return True if opcode code appears in the pickle, else False.
diff --git a/Modules/cPickle.c b/Modules/cPickle.c
index a9bbd36..17da7d7 100644
--- a/Modules/cPickle.c
+++ b/Modules/cPickle.c
@@ -15,7 +15,7 @@
 #define WRITE_BUF_SIZE 256
 
 /* Bump this when new opcodes are added to the pickle protocol. */
-#define CURRENT_PROTOCOL_NUMBER 2
+#define HIGHEST_PROTOCOL 2
 
 /*
  * Pickle opcodes.  These must be kept in synch with pickle.py.  Extensive
@@ -2743,11 +2743,11 @@
 	Picklerobject *self;
 
 	if (proto < 0)
-		proto = CURRENT_PROTOCOL_NUMBER;
-	if (proto > CURRENT_PROTOCOL_NUMBER) {
+		proto = HIGHEST_PROTOCOL;
+	if (proto > HIGHEST_PROTOCOL) {
 		PyErr_Format(PyExc_ValueError, "pickle protocol %d asked for; "
 			     "the highest available protocol is %d",
-			     proto, CURRENT_PROTOCOL_NUMBER);
+			     proto, HIGHEST_PROTOCOL);
 		return NULL;
 	}
 
@@ -4308,7 +4308,7 @@
 	 * int when chewing on 1 byte.
 	 */
 	assert(i >= 0);
-	if (i <= CURRENT_PROTOCOL_NUMBER)
+	if (i <= HIGHEST_PROTOCOL)
 		return 0;
 
 	PyErr_Format(PyExc_ValueError, "unsupported pickle protocol: %d", i);
@@ -5562,6 +5562,10 @@
 	}
 	Py_DECREF(di);
 
+	i = PyModule_AddIntConstant(m, "HIGHEST_PROTOCOL", HIGHEST_PROTOCOL);
+	if (i < 0)
+		return;
+
 	/* These are purely informational; no code uses them. */
 	/* File format version we write. */
 	format_version = PyString_FromString("2.0");
