Re: Some doubious code in pgstat.c
Masahiko Sawada <sawada.mshk@gmail.com>
From: Masahiko Sawada <sawada.mshk@gmail.com>
To: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Cc: Amit Kapila <amit.kapila16@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2020-11-05T04:14:20Z
Lists: pgsql-hackers
On Thu, Nov 5, 2020 at 11:18 AM Kyotaro Horiguchi <horikyota.ntt@gmail.com> wrote: > > At Wed, 4 Nov 2020 22:49:57 +0900, Masahiko Sawada <sawada.mshk@gmail.com> wrote in > > On Wed, Nov 4, 2020 at 6:49 PM Amit Kapila <amit.kapila16@gmail.com> wrote: > > > > > > On Wed, Nov 4, 2020 at 2:25 PM Kyotaro Horiguchi > > > <horikyota.ntt@gmail.com> wrote: > > > > > > > > Hello. > > > > > > > > While updating a patch, I noticed that the replication slot stats > > > > patch (9868167500) put some somewhat doubious codes. > > > > > > > > In pgstat_recv_replslot, an assertion like the following exists: > > > > > > > > > idx = pgstat_replslot_index(msg->m_slotname, !msg->m_drop); > > > > .. > > > > > Assert(idx >= 0 && idx < max_replication_slots); > > > > > > > > But the idx should be 0..(max_replication_slots - 1). > > > > > > > > > > Right. > > > > > > > > > > > In the same function the following code assumes that the given "char > > > > *name" has the length of NAMEDATALEN. It actually is, but that > > > > assumption seems a bit bogus. I think it should use strlcpy instead. > > > > > > > > > > Agreed. > > > > +1 > > > > The commit uses memcpy in the same way in other places too, for > > instance in pgstat_report_replslot_drop(). Should we fix all of them? > > Absolutely. the same is seen at several places. Please find the > attached. > > As another issue, just replace memcpy with strlcpy makes compiler > complain of type mismatch, as the first paramter to memcpy had an > needless "&" operator. I removed it in this patch. > > (&msg.m_slotname is a "char (*)[NAMEDATALEN]", not a "char *".) > The patch looks good to me. Regards, -- Masahiko Sawada EnterpriseDB: https://www.enterprisedb.com/
Commits
-
Use strlcpy instead of memcpy for copying the slot name in pgstat.c.
- 4f841ce3f7f4 14.0 landed
-
Rearrange pgstat_bestart() to avoid failures within its critical section.
- 85ccb6899c6c 12.0 cited