Re: initdb fails to initialize data directory

Heikki Linnakangas <hlinnaka@iki.fi>

From: Heikki Linnakangas <hlinnaka@iki.fi>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>, Nikhil Sontakke <nikhils@2ndquadrant.com>
Cc: PostgreSQL mailing lists <pgsql-hackers@postgresql.org>
Date: 2018-04-19T19:15:30Z
Lists: pgsql-hackers
On 19/04/18 09:38, Alvaro Herrera wrote:
> Nikhil Sontakke wrote:
> 
>> Intrigued, on digging down further, this is happening because we are
>> not using a long enough buffer to accept the output of "postgres -V"
>> in the find_other_exec() function. In our case, we had used
>> --with-extra-version option with configure which caused the output of
>> "postgres -V" to go a little beyond the current "line" variable size.
>> This caused the strcmp to fail leading to initdb refusing to
>> initialize any data directories at all.
> 
> Wow, that seems pretty silly nowadays.

Agreed.

Nitpick: using MAXPGPATH seems for the buffer size seems to wrong to me. 
We're not storing a path here. MAXPGPATH is 1024 by default, which seems 
fine, but I would've spelled it out directly as "line[1000]".

- Heikki


Commits

  1. Enlarge find_other_exec's meager fgets buffer