v1-0001-Fix-Coverity-issues-reported-in-commit-25a30bbd42.patch
application/octet-stream
Filename: v1-0001-Fix-Coverity-issues-reported-in-commit-25a30bbd42.patch
Type: application/octet-stream
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v1-0001
Subject: Fix Coverity issues reported in commit 25a30bbd423.
| File | + | − |
|---|---|---|
| src/backend/executor/nodeWindowAgg.c | 6 | 5 |
From 28f5332b50a7cf11f16d35b2860628e58077c239 Mon Sep 17 00:00:00 2001
From: Tatsuo Ishii <ishii@postgresql.org>
Date: Mon, 6 Oct 2025 08:45:03 +0900
Subject: [PATCH v1] Fix Coverity issues reported in commit 25a30bbd423.
This commit fixes several issues pointed out by Coverity.
- In row_is_in_frame(), return value of window_gettupleslot() was not checked.
- WinGetFuncArgInPartition() tried to derefference "isout" pointer
even if it's NULL in some places.
Discussion: https://postgr.es/m/202510051612.gw67jlc2iqpw%40alvherre.pgsql
---
src/backend/executor/nodeWindowAgg.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/backend/executor/nodeWindowAgg.c b/src/backend/executor/nodeWindowAgg.c
index cf667c81211..7ccf1160dca 100644
--- a/src/backend/executor/nodeWindowAgg.c
+++ b/src/backend/executor/nodeWindowAgg.c
@@ -1501,8 +1501,9 @@ row_is_in_frame(WindowObject winobj, int64 pos, TupleTableSlot *slot,
/* following row that is not peer is out of frame */
if (pos > winstate->currentpos)
{
- if (fetch_tuple)
- window_gettupleslot(winobj, pos, slot);
+ if (fetch_tuple) /* need to fetch tuple? */
+ if (!window_gettupleslot(winobj, pos, slot))
+ return -1;
if (!are_peers(winstate, slot, winstate->ss.ss_ScanTupleSlot))
return -1;
}
@@ -3761,7 +3762,7 @@ WinGetFuncArgInPartition(WindowObject winobj, int argno,
{
datum = gettuple_eval_partition(winobj, argno,
abs_pos, isnull, isout);
- if (!*isout && set_mark)
+ if (isout && !*isout && set_mark)
WinSetMarkPosition(winobj, abs_pos);
return datum;
}
@@ -3803,7 +3804,7 @@ WinGetFuncArgInPartition(WindowObject winobj, int argno,
default: /* need to check NULL or not */
datum = gettuple_eval_partition(winobj, argno,
abs_pos, isnull, isout);
- if (*isout) /* out of partition? */
+ if (isout && *isout) /* out of partition? */
return datum;
if (!*isnull)
@@ -3814,7 +3815,7 @@ WinGetFuncArgInPartition(WindowObject winobj, int argno,
}
} while (notnull_offset < notnull_relpos);
- if (!*isout && set_mark)
+ if (isout && !*isout && set_mark)
WinSetMarkPosition(winobj, abs_pos);
return datum;
--
2.43.0