Re:Avoid an odd undefined behavior with memcmp (src/bin/pg_rewind/pg_rewind.c) - Mailing list pgsql-hackers

From Long Song
Subject Re:Avoid an odd undefined behavior with memcmp (src/bin/pg_rewind/pg_rewind.c)
Date
Msg-id 5b47b4b4.1a13.18fc728c5a0.Coremail.songlong88@126.com
Whole thread Raw
In response to Avoid an odd undefined behavior with memcmp (src/bin/pg_rewind/pg_rewind.c)  (Ranier Vilela <ranier.vf@gmail.com>)
Responses Re: Avoid an odd undefined behavior with memcmp (src/bin/pg_rewind/pg_rewind.c)
List pgsql-hackers
Hi Ranier,



> IMO, I think that pg_rewind can have a security issue,
> if two files are exactly the same, they are considered different.
> Because use of structs with padding values is unspecified.
Logically you are right. But I don't understand what scenario
would require memcmp to compare ControlFileData.
In general, we read ControlFileData from a pg_control file
and then use members of ControlFileData directly.
So the two ControlFileData are not directly compared by byte.

> Fix by explicitly initializing with memset to avoid this.
And, even if there are scenarios that use memcmp comparisons,
your modifications are not complete.
There are three calls to the digestControlFile in the main()
of pg_rewind.c, and as your said(if right), these should do
memory initialization every time.





--
Best Regards,

Long

pgsql-hackers by date:

Previous
From: Noah Misch
Date:
Subject: Re: Remove last traces of HPPA support
Next
From: Peter Smith
Date:
Subject: Re: Improving the latch handling between logical replication launcher and worker processes.