summary refs log tree commit diff
path: root/crypt/crypt-entry.c
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2012-10-10 07:05:10 -0300
committerAlexandre Oliva <aoliva@redhat.com>2012-10-10 07:05:10 -0300
commit4ba74a357376c8f8bf49487f96ae71cf2460c3f3 (patch)
tree785d54466a7b81a674cd69ee59c5e617f2d6101e /crypt/crypt-entry.c
parent0e3b5d6a6859d74a18033d3a55e0ee92340437b3 (diff)
downloadglibc-4ba74a357376c8f8bf49487f96ae71cf2460c3f3.tar.gz
glibc-4ba74a357376c8f8bf49487f96ae71cf2460c3f3.tar.xz
glibc-4ba74a357376c8f8bf49487f96ae71cf2460c3f3.zip
* crypt/crypt-private.h: Include stdbool.h.
(_ufc_setup_salt_r): Return bool.
* crypt/crypt-entry.c: Include errno.h.
(__crypt_r): Return NULL with EINVAL for bad salt.
* crypt/crypt_util.c (bad_for_salt): New.
(_ufc_setup_salt_r): Check that salt is long enough and within
the specified alphabet.
* crypt/badsalttest.c: New file.
* crypt/Makefile (tests): Add it.
($(objpfx)badsalttest): New.
Diffstat (limited to 'crypt/crypt-entry.c')
-rw-r--r--crypt/crypt-entry.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/crypt/crypt-entry.c b/crypt/crypt-entry.c
index 91e2c4e97b..9fb22bdac4 100644
--- a/crypt/crypt-entry.c
+++ b/crypt/crypt-entry.c
@@ -27,6 +27,7 @@
 #include <stdio.h>
 #endif
 #include <string.h>
+#include <errno.h>
 
 #ifndef STATIC
 #define STATIC static
@@ -108,7 +109,11 @@ __crypt_r (key, salt, data)
   /*
    * Hack DES tables according to salt
    */
-  _ufc_setup_salt_r (salt, data);
+  if (!_ufc_setup_salt_r (salt, data))
+    {
+      __set_errno (EINVAL);
+      return NULL;
+    }
 
   /*
    * Setup key schedule