Re: [PATCH] Use DatumGetUInt32() for dsm_attach() in test_shm_mq_main()

From: Nathan Bossart <nathandbossart(at)gmail(dot)com>
To: Jianghua Yang <yjhjstz(at)gmail(dot)com>
Cc: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: [PATCH] Use DatumGetUInt32() for dsm_attach() in test_shm_mq_main()
Date: 2025-06-26 20:30:57
Message-ID: aF2uAWMtGR-HNc9C@nathan
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, Jun 26, 2025 at 12:51:10PM -0700, Jianghua Yang wrote:
> The argument passed to `dsm_attach()` is expected to be a `uint32`, but the
> code currently uses `DatumGetInt32()` to extract it from the `Datum`
> argument. This can lead to incorrect behavior when the high bit is set, as
> 'unable to map dynamic shared memory segment'.

I'm not sure this actually causes any problems in practice because
dsm_attach() treats its argument as unsigned. In any case, I've never seen
this test fail like that, and presumably the high bit is sometimes set
because the handle is generated with a PRNG.

Nevertheless, I see no point in using the wrong macro. I'll plan on
committing/back-patching this shortly.

--
nathan

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Jianghua Yang 2025-06-26 20:46:10 Re: [PATCH] Use DatumGetUInt32() for dsm_attach() in test_shm_mq_main()
Previous Message Nathan Bossart 2025-06-26 20:16:35 Re: [PATCH] Use binaryheap_* macro where appropriate