Re: Parametrization minimum password lenght
Emanuele Musella <emamuse86@gmail.com>
From: Emanuele Musella <emamuse86@gmail.com>
To: pgsql-hackers@lists.postgresql.org
Cc: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Date: 2024-11-18T15:59:53Z
Lists: pgsql-hackers
Attachments
- min_password_length_v6.patch (application/octet-stream) patch v6
Hello Bertrand,
thank you for your feedbacks.
We have done every fixes required.
In attach the last version.
Best regards
Il giorno lun 18 nov 2024 alle ore 11:39 Bertrand Drouvot <
bertranddrouvot.pg@gmail.com> ha scritto:
> Hi,
>
> On Mon, Nov 18, 2024 at 10:01:41AM +0100, Emanuele Musella wrote:
> > Hi all,
> >
> > we have fixed the following warning from the CFbot:
> >
> > [07:14:29.637] passwordcheck.c:37:5: error: no previous extern
> declaration
> > for non-static variable 'min_password_length'
> > [-Werror,-Wmissing-variable-declarations]
> >
> >
> > In attach the fixed patch.
>
> Thanks for the patch, that looks like a useful feature!
>
> A few random comments:
>
> === 1
>
> + * Author: Maurizio Boriani <maurizio@boriani.cloud>
> + * Author: Emanuele Musella <emamuse86@gmail.com>
>
> I'm not sure we do that usually. For example, in cb3384a0cb, Fabien Coelho
> has
> not been mentioned as an author in contrib/isn/isn.c.
>
> === 2
>
> #include "commands/user.h"
> #include "fmgr.h"
> #include "libpq/crypt.h"
> +#include "commands/explain.h"
> +#include "utils/guc.h"
>
> The "includes" should be in the order based on their ASCII value (see
> 7e735035f2).
>
> === 3
>
> +/* min_password_length minimum password length */
>
> I think "/* Minimum password length */ is "enough" for the comment.
>
> Also what about adding "/* GUC variables */" on top of it?
>
> === 4 (Nit)
>
> +static int min_password_length;
>
> What about "min_pwd_len" to make it consistent with pwd_has_letter and
> pwd_has_nonletter
> for example?
>
> === 5
>
> prev_check_password_hook = check_password_hook;
> check_password_hook = check_password;
> +
> + /* Define custom GUC variables. */
> + DefineCustomIntVariable("passwordcheck.min_password_length",
>
> What about moving the DefineCustomIntVariable before the hooks? (that
> would be
> consistent with auto_explain.c, auth_delay.c, autoprewarm.c and
> pg_stat_statements.c
> to name a few).
>
> === 6
>
> + "8 is default.",
>
> I don't think that's needed (that would be visible from
> pg_settings.extra_desc
> while it already provides the information through the boot_val field).
>
> === 7
>
> + GUC_UNIT_MS,
>
> Not the right unit, that should be GUC_UNIT_BYTE because...
>
> === 8
>
> postgres=# SET passwordcheck.min_password_length = 4;
> SET
> postgres=# create user test with password 'ab1';
> ERROR: password is too short
>
> But with multibyte in play:
>
> postgres=# create user test with password 'äb1';
> CREATE ROLE.
>
> That's because "strlen(password);" returns the number of bytes.
>
> We could make it based on the characters instead by using "pg_mbstrlen()"
> but that would break the behavior as compared to now. So, I think we
> just need to make it clear that's bytes instead.
>
> === 9
>
> I think that a call to MarkGUCPrefixReserved() is missing (see
> auto_explain.c
> for example).
>
> === 10
>
> + <para>
> + In <filename>postgresql.conf</filename> you may set the minimum
> password length
> + by setting passwordcheck.min_password_length = INT.
>
> I think that would make sense to add a "Configuration Parameters" section
> and
> follow the format done in auto-explain or pg_prewarm for example.
>
> === 11
>
> + The default minimum password length if not setted
> passwordcheck.min_password_length is 8 chars.
>
> s/chars/bytes/ (as per === 8 above)
>
> Regards,
>
> --
> Bertrand Drouvot
> PostgreSQL Contributors Team
> RDS Open Source Databases
> Amazon Web Services: https://aws.amazon.com
>
Commits
-
Add passwordcheck.min_password_length.
- f7e1b3828a93 18.0 landed