On Mon, 15 Apr 2024 at 11:17, Ranier Vilela <[email protected]> wrote:
> Coverity has reported some out-of-bounds bugs
> related to the GetCommandTagName function.
>
> The size of the array is defined by COMMAND_TAG_NEXTTAG enum,
> whose value currently corresponds to 193.
> Since enum items are evaluated starting at zero, by default.
I think the change makes sense. I don't see any good reason to define
COMMAND_TAG_NEXTTAG or force the compiler's hand when it comes to
sizing that array.
Clearly, Coverity does not understand that we'll never call any of
those GetCommandTag* functions with COMMAND_TAG_NEXTTAG.
> Patch attached.
You seem to have forgotten to attach it, but my comments above were
written with the assumption that the patch is what I've attached here.
David
diff --git a/src/backend/tcop/cmdtag.c b/src/backend/tcop/cmdtag.c
index 68689b3e0d..0870064fdd 100644
--- a/src/backend/tcop/cmdtag.c
+++ b/src/backend/tcop/cmdtag.c
@@ -30,7 +30,7 @@ typedef struct CommandTagBehavior
#define PG_CMDTAG(tag, name, evtrgok, rwrok, rowcnt) \
{ name, (uint8) (sizeof(name) - 1), evtrgok, rwrok, rowcnt },
-static const CommandTagBehavior tag_behavior[COMMAND_TAG_NEXTTAG] = {
+static const CommandTagBehavior tag_behavior[] = {
#include "tcop/cmdtaglist.h"
};
diff --git a/src/include/tcop/cmdtag.h b/src/include/tcop/cmdtag.h
index da210e54fa..23c99d7eca 100644
--- a/src/include/tcop/cmdtag.h
+++ b/src/include/tcop/cmdtag.h
@@ -22,7 +22,6 @@
typedef enum CommandTag
{
#include "tcop/cmdtaglist.h"
- COMMAND_TAG_NEXTTAG
} CommandTag;
#undef PG_CMDTAG