| From: | Andrew Dunstan <andrew(at)dunslane(dot)net> |
|---|---|
| To: | Mahendra Singh Thalor <mahi6run(at)gmail(dot)com>, Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
| Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Nathan Bossart <nathandbossart(at)gmail(dot)com>, Srinath Reddy <srinath2133(at)gmail(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org |
| Subject: | Re: getting "shell command argument contains a newline or carriage return:" error with pg_dumpall when db name have new line in double quote |
| Date: | 2026-02-21 18:16:05 |
| Message-ID: | 4c0b0aba-6294-4b49-a63b-f790f85065e6@dunslane.net |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On 2026-02-03 Tu 2:14 PM, Mahendra Singh Thalor wrote:
> Thanks Álvaro, Tom and Nathan for the review.
>
> On Mon, 2 Feb 2026 at 16:46, Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> wrote:
>>
>>> +void
>>> +reject_newline_in_name(const char *objname, const char *objtype)
>>> +{
>>> + /* Report error if name has \n or \r character. */
>>> + if (strpbrk(objname, "\n\r"))
>>> + ereport(ERROR,
>>> + (errcode(ERRCODE_INVALID_PARAMETER_VALUE)),
>>> + errmsg("\"%s\" name \"%s\" contains a newline or carriage return character",objtype, objname));
>>> +}
>> I think this error message doesn't work very well. Having the
>> "database" word be an untranslatable piece of the message makes no sense
>> to me. I would rather have the ereport() in each place where this is
>> needed so that we can have a complete phrase to translate, and avoid
>> this wrinkle. Alternatively you could pass the error message from the
>> caller (to abstract away the strpbrk() call) but I'm not sure that's
>> really all that useful.
> Fixed.
>
>> BTW, looking at generate_db in src/bin/pg_upgrade/t/002_pg_upgrade.pl I
>> wonder why don't we reject BEL here also. (Or actually, maybe not, but
>> I think commit 322becb6085c was wrong to lose the part of the comment
>> that explained the reason.)
>>
>>> --- a/src/bin/scripts/t/020_createdb.pl
>>> +++ b/src/bin/scripts/t/020_createdb.pl
>>> @@ -241,6 +241,18 @@ $node->command_fails(
>>> ],
>>> 'fails for invalid locale provider');
>>>
>>> +$node->command_fails_like(
>>> + [ 'createdb', "invalid \n dbname" ],
>>> + qr(contains a newline or carriage return character),
>>> + 'fails if database name containing newline character in name'
>>> +);
>>> +
>>> +$node->command_fails_like(
>>> + [ 'createdb', "invalid \r dbname" ],
>>> + qr(contains a newline or carriage return character),,
>>> + 'fails if database name containing carriage return character in name'
>>> +);
>> Note there are two commas the the qr() line in the second stanza. Seems
>> to be innocuous, because the test log shows
> Fixed.
>
>> # Running: createdb invalid
>> dbname
>> [11:57:00.942](0.012s) ok 34 - fails if database name containing newline character in name: exit code not 0
>> [11:57:00.942](0.000s) ok 35 - fails if database name containing newline character in name: matches
>> # Running: createdb invalid ^M dbname
>> [11:57:00.953](0.011s) ok 36 - fails if database name containing carriage return character in name: exit code not 0
>> [11:57:00.954](0.000s) ok 37 - fails if database name containing carriage return character in name: matches
>>
>> but it'd look nicer without those commas. Also, the "fails if ...
>> containing" test names sound ungrammatical to me.
> Fixed.
>
>> --
>> Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/
>> "Always assume the user will do much worse than the stupidest thing
>> you can imagine." (Julien PUYDT)
> Based on suggestions, I removed the new added function and changed the
> error message and added a check for tablespace also.
>
> Here, I am attaching updated patches.
OK, I have squashed these two together and tweaked them a bit. I propose
to commit this patch fairly soon.
cheers
andrew
--
Andrew Dunstan
EDB: https://www.enterprisedb.com
| Attachment | Content-Type | Size |
|---|---|---|
| v10-ban-crlf-in-global-names.patch | text/x-patch | 15.4 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2026-02-21 18:31:25 | Re: consider -Wmissing-variable-declarations |
| Previous Message | Alexander Lakhin | 2026-02-21 18:00:00 | Re: ecpg test thread/alloc hangs on sidewinder running NetBSD 9.3 |