diff --git a/mod/box/box.m b/mod/box/box.m
index 26721739199c0bb52a2b126044d679ee6dfe9389..68c8d7115965511f2511935bdfd415c573e78100 100644
--- a/mod/box/box.m
+++ b/mod/box/box.m
@@ -582,7 +582,10 @@ process_select(struct box_txn *txn, u32 limit, u32 offset, struct tbuf *data)
 				return;
 
 			u32 key_len = read_u32(data);
-			void *key = read_field(data);
+			void *key = NULL;
+
+			if (key_len != 0)
+				key = read_field(data);
 
 			/* advance remaining fields of a key */
 			for (int i = 1; i < key_len; i++)