diff options
author | Heikki Linnakangas | 2015-06-30 10:44:04 +0000 |
---|---|---|
committer | Heikki Linnakangas | 2015-06-30 10:44:04 +0000 |
commit | 302ac7f27197855afa8c89fae36c85c124ae156b (patch) | |
tree | c92ac6a9decee614a2dc58bd2a1bd4721f35f35b | |
parent | fdf28853ae6a397497b79fea69f89f4f7b9aa991 (diff) |
Add assertion to check the special size is sane before dereferencing it.
This seems useful to catch errors of the sort I just fixed, where
PageGetSpecialPointer is called before initializing the page.
-rw-r--r-- | src/include/storage/bufpage.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/include/storage/bufpage.h b/src/include/storage/bufpage.h index c2fbffc8e9b..a2f78ee56ce 100644 --- a/src/include/storage/bufpage.h +++ b/src/include/storage/bufpage.h @@ -304,6 +304,8 @@ typedef PageHeaderData *PageHeader; #define PageGetSpecialPointer(page) \ ( \ AssertMacro(PageIsValid(page)), \ + AssertMacro(((PageHeader) (page))->pd_special <= BLCKSZ), \ + AssertMacro(((PageHeader) (page))->pd_special >= SizeOfPageHeaderData), \ (char *) ((char *) (page) + ((PageHeader) (page))->pd_special) \ ) |