>From the 2.17 NEWS:

* The `crypt' function now fails if passed salt bytes that violate the
  specification for those values.  On Linux, the `crypt' function will
  consult /proc/sys/crypto/fips_enabled to determine if "FIPS mode" is
  enabled, and fail on encrypted strings using the MD5 or DES algorithm
  when the mode is enabled.

>         tst("   ", "%qb?,db=yu'd,0h0%db:3?,c?=,d dZ,?=I:yZZ30 eZy=a%0 d");

This string contains invalid salt crypt character.

POSIX says:
~~~
Otherwise, it shall return a null pointer and set errno to indicate the error.
~~~

Therefore returning null and setting errno is entirely appropriate.

All conforming applications should check for NULL.

Conforming implementations may return additional errors to those
listed by POSIX
It is only a problem if you don't return the listed errno for the same error.

>         if (strcmp(p->pw_passwd, crypt(oldpasswd, p->pw_passwd)) == 0) {

Examples are non-normative. They are simply informative and may assume things
like always using valid salt characters.

> If this is an error at all… on wheezy it was none, and BSD agrees:

It is not an error. You can't use invalid salt strings.

> Please fix this to at least never return NULL with something
> else than an ENOSYS condition (crypt(3) not implemented at all),
> because this *will* break unrelated software.

That will not get accepted upstream.

Please fix your application to conform with POSIX.

You must check the result and act appropriately when you see a NULL return
including cleaning the input to contain only valid salt characters.

Cheers,
Carlos.


--
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/cae2ss1jpngrj9z2pezx3wewetahpyrzjcxlwmnidcete5qo...@mail.gmail.com

Reply via email to