Re: Undefined behavior detected by new clang's ubsan - Mailing list pgsql-hackers

From Alexander Lakhin
Subject Re: Undefined behavior detected by new clang's ubsan
Date
Msg-id ba2ba16a-13bd-4d66-8ce5-753792d7a4ff@gmail.com
Whole thread Raw
In response to Re: Undefined behavior detected by new clang's ubsan  (John Naylor <johncnaylorls@gmail.com>)
Responses Re: Undefined behavior detected by new clang's ubsan
List pgsql-hackers
Hello John,

21.01.2026 12:05, John Naylor wrote:
As for the rest of the proposed fixes, most seem okay, but I have some nits:

Thank you for spending time on this!
I agree with all of your changes (except for one noted below) -- didn't
mean to propose committable changes, just wanted to show the fixes that
allowed check-world to pass.

heaptoast.c     memcpy(VARDATA(result) +
-         (curchunk * TOAST_MAX_CHUNK_SIZE - sliceoffset) + chcpystrt,
+         (int)(curchunk * TOAST_MAX_CHUNK_SIZE - sliceoffset) + chcpystrt,

Not sure about this one. It would be better if we reversing the
operands allowed us to avoid overflow in the first place:

-         (curchunk * TOAST_MAX_CHUNK_SIZE - sliceoffset) + chcpystrt,
+         chcpystrt + (curchunk * TOAST_MAX_CHUNK_SIZE - sliceoffset)

Does that silence the warning?

Unfortunately, no -- I still got:
heaptoast.c:771:17: runtime error: addition of unsigned offset to 0x78120673fac6 overflowed to 0x78120673fa04
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior heaptoast.c:771:17


Best regards,
Alexander

pgsql-hackers by date:

Previous
From: Jeff Davis
Date:
Subject: Re: Remaining dependency on setlocale()
Next
From: Viktor Holmberg
Date:
Subject: Re: ON CONFLICT DO SELECT (take 3)