diff --git a/src/encode.c b/src/encode.c
index 06ff1acf10c6d78e91af70c25fb01efce67612f4..f1ba1dfca8f33608eb97ac35f49a2688da0ea97b 100644
--- a/src/encode.c
+++ b/src/encode.c
@@ -4615,8 +4615,11 @@ static void decode_value2(struct decode_data *data)
 		/* refno */
 		decode_number(refno, data);
 
+                if (refno < 0 || refno >= p->num_identifier_references)
+                    decode_error(data, NULL, "Bad identifier reference %d\n", refno);
+
 		/* FIXME:
-		 *   Verify validity of depth and refno.
+		 *   Verify validity of depth.
 		 */
 
 		/* Expected identifier number. */