diff --git a/src/backend/storage/page/bufpage.c b/src/backend/storage/page/bufpage.c
index 1b70bfbe8cc1953616a634282463fb02749b70e8..bce0d53a9c4a232ea3fa57787f39f4a2a4f1877d 100644
--- a/src/backend/storage/page/bufpage.c
+++ b/src/backend/storage/page/bufpage.c
@@ -738,7 +738,8 @@ PageIndexTupleDelete(Page page, OffsetNumber offnum)
 	if (phdr->pd_lower < SizeOfPageHeaderData ||
 		phdr->pd_lower > phdr->pd_upper ||
 		phdr->pd_upper > phdr->pd_special ||
-		phdr->pd_special > BLCKSZ)
+		phdr->pd_special > BLCKSZ ||
+		phdr->pd_special != MAXALIGN(phdr->pd_special))
 		ereport(ERROR,
 				(errcode(ERRCODE_DATA_CORRUPTED),
 				 errmsg("corrupted page pointers: lower = %u, upper = %u, special = %u",
@@ -757,12 +758,15 @@ PageIndexTupleDelete(Page page, OffsetNumber offnum)
 	offset = ItemIdGetOffset(tup);
 
 	if (offset < phdr->pd_upper || (offset + size) > phdr->pd_special ||
-		offset != MAXALIGN(offset) || size != MAXALIGN(size))
+		offset != MAXALIGN(offset))
 		ereport(ERROR,
 				(errcode(ERRCODE_DATA_CORRUPTED),
 				 errmsg("corrupted item pointer: offset = %u, size = %u",
 						offset, (unsigned int) size)));
 
+	/* Amount of space to actually be deleted */
+	size = MAXALIGN(size);
+
 	/*
 	 * First, we want to get rid of the pd_linp entry for the index tuple. We
 	 * copy all subsequent linp's back one slot in the array. We don't use