./psql postgres
postgres=# BEGIN;

Hi,

On Fri, Mar 28, 2025 at 8:13 PM Nathan Bossart <nathandboss...@gmail.com>
wrote:

>
> +       /* Report error if dbname have newline or carriage return in name.
> */
> +       if (strpbrk(dbname, "\n\r"))
> +               ereport(ERROR,
> +                               (errcode(ERRCODE_INVALID_PARAMETER_VALUE)),
> +                               errmsg("database name contains a newline
> or carriage return character"),
> +                               errhint("newline or carriage return
> character is not allowed in database name"));
>
> I think it would be better to move this to a helper function instead of
> duplicating this code in several places.
>
agreed,we can do something like this

static void
validate_name(const char *name, const char *object_type)
{
    if (strpbrk(name, "\n\r"))
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE)),
                errmsg("%s name contains a newline or carriage return
character", object_type),
                errhint("Newline or carriage return character is not
allowed in %s name", object_type));
}

where object_type is database or role/user name
,is src/backend/commands/define.c best to define this function?


>
> Taking a step back, are we sure that 1) this is the right place to do these
> checks and 2) we shouldn't apply the same restrictions to all names?  I'm
> wondering if it would be better to add these checks to the grammar instead
> of trying to patch up all the various places they are used in the tree.
>
> hmm... need to think.

May the force be with you,
Srinath Reddy Sadipiralla
EDB: https://www.enterprisedb.com/

postgres=# COMMIT;
postgres=# \q

Reply via email to