Re: Integer undeflow in fprintf in dsa.c - Mailing list pgsql-hackers

From Daniel Gustafsson
Subject Re: Integer undeflow in fprintf in dsa.c
Date
Msg-id DADF07F1-02BE-4B97-B8FD-EEC2AD02F999@yesql.se
Whole thread Raw
In response to Integer undeflow in fprintf in dsa.c  (Ильясов Ян <ianilyasov@outlook.com>)
Responses Re: Integer undeflow in fprintf in dsa.c
List pgsql-hackers
> On 20 Feb 2024, at 12:28, Ильясов Ян <ianilyasov@outlook.com> wrote:

> ​fprintf(stderr,
>            "    segment bin %zu (at least %d contiguous pages free):\n",
>            i, 1 << (i - 1));
>
> In case i​ equals zero user will get "at least -2147483648 contiguous pages free".

That does indeed seem like an oversight.

> I believe that this is a mistake, and fprintf​ should print "at least 0 contiguous pages free"
> in case i​ equals zero.

The message "at least 0 contiguous pages free" reads a bit nonsensical though,
wouldn't it be preferrable to check for i being zero and print a custom message
for that case? Something like the below untested sketch?

+                       if (i == 0)
+                               fprintf(stderr,
+                                               "    segment bin %zu (no contiguous free pages):\n", i);
+                       else
+                               fprintf(stderr,
+                                               "    segment bin %zu (at least %d contiguous pages free):\n",
+                                               i, 1 << (i - 1));

--
Daniel Gustafsson




pgsql-hackers by date:

Previous
From: Daniel Gustafsson
Date:
Subject: Re: Replace current implementations in crypt() and gen_salt() to OpenSSL
Next
From: Tomas Vondra
Date:
Subject: Re: logical decoding and replication of sequences, take 2