From 16a41e491cce5f01127f86871f2df1604b3301b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=9F=E6=89=BF=E5=BF=97?= <842536125@qq.com> Date: Wed, 8 May 2024 15:33:12 +0800 Subject: [PATCH] On branch page Your branch is up to date with 'origin/page'. Changes to be committed: modified: rawpage.cpp On branch page Your branch is up to date with 'origin/page'. Changes to be committed: modified: rawpage.cpp On branch page Your branch is up to date with 'origin/page'. Changes to be committed: modified: rawpage.cpp On branch page Your branch is up to date with 'origin/page'. Changes to be committed: modified: rawpage.cpp On branch page Your branch is up to date with 'origin/page'. Changes to be committed: modified: catalog.cpp On branch page Your branch is up to date with 'origin/page'. Changes to be committed: modified: catalog.cpp On branch page Your branch is up to date with 'origin/page'. Changes to be committed: modified: catalog.cpp On branch page Your branch is up to date with 'origin/page'. Changes to be committed: modified: catalog.cpp On branch page Your branch is up to date with 'origin/page'. Changes to be committed: modified: contrib/pageinspect/rawpage.cpp modified: src/common/backend/catalog/catalog.cpp --- contrib/pageinspect/rawpage.cpp | 6 ++++++ src/common/backend/catalog/catalog.cpp | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/contrib/pageinspect/rawpage.cpp b/contrib/pageinspect/rawpage.cpp index 6b5f49b35..ee1be0590 100644 --- a/contrib/pageinspect/rawpage.cpp +++ b/contrib/pageinspect/rawpage.cpp @@ -156,6 +156,12 @@ static bytea* get_raw_page_internal(text* relname, ForkNumber forknum, BlockNumb SET_VARSIZE(raw_page, BLCKSZ + VARHDRSZ); raw_page_data = VARDATA(raw_page); + if ((forknum == InvalidForkNumber) || (forknum > INIT_FORKNUM)) { + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("cannot get raw page from stream for Invlid forkname; Valid forknames are \"main\", \"fsm\", \"vm\", \"bcm\", \"init\""))); + } + /* Take a verbatim copy of the page */ buf = ReadBufferExtended(rel, forknum, blkno, RBM_NORMAL, NULL); diff --git a/src/common/backend/catalog/catalog.cpp b/src/common/backend/catalog/catalog.cpp index 6a83eb01a..4b031619f 100644 --- a/src/common/backend/catalog/catalog.cpp +++ b/src/common/backend/catalog/catalog.cpp @@ -152,6 +152,10 @@ ForkNumber forkname_to_number(char* forkName, BlockNumber* segno) subtoken = strtok_r(token, ".", &tmpsubtoken); Assert(subtoken != NULL); + if (atooid(subtoken)) { + return InvalidForkNumber; + } + if (strlen(subtoken) == parselen) { ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE),