]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Avoid memcpy() with same source and destination in pgstat_recv_replslot.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 20 Dec 2020 17:38:32 +0000 (12:38 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 20 Dec 2020 17:38:32 +0000 (12:38 -0500)
Same type of issue as in commit 53d4f5fef and earlier fixes; also
found by apparently-more-picky-than-the-buildfarm valgrind testing.
This one is an oversight in commit 986816750.  Since that's new in
HEAD, no need for a back-patch.

src/backend/postmaster/pgstat.c

index 6b60f293e947cbcc7a40844cbaec479ffc2d0d80..d87d9d06ee250346c790755844dae5b0f7665cfe 100644 (file)
@@ -6916,15 +6916,15 @@ pgstat_recv_replslot(PgStat_MsgReplSlot *msg, int len)
                return;
 
        /* it must be a valid replication slot index */
-       Assert(idx >= 0 && idx < max_replication_slots);
+       Assert(idx < nReplSlotStats);
 
        if (msg->m_drop)
        {
                /* Remove the replication slot statistics with the given name */
-               memcpy(&replSlotStats[idx], &replSlotStats[nReplSlotStats - 1],
-                          sizeof(PgStat_ReplSlotStats));
+               if (idx < nReplSlotStats - 1)
+                       memcpy(&replSlotStats[idx], &replSlotStats[nReplSlotStats - 1],
+                                  sizeof(PgStat_ReplSlotStats));
                nReplSlotStats--;
-               Assert(nReplSlotStats >= 0);
        }
        else
        {