Fix error logging for dynamically-loaded modules. Bug 2507
[users/jgh/exim.git] / src / src / crypt16.c
index 4341356692008f17a9b5813a11f58720e9f6721d..56353c326af2a8405410cffa7f5f4c3d58736c3e 100644 (file)
@@ -1,5 +1,3 @@
-/* $Cambridge: exim/src/src/crypt16.c,v 1.1 2004/10/07 10:39:01 ph10 Exp $ */
-
 /*
  * Copyright (c) 2000-2002
  *   Chris Adams <cmadams@iruntheinter.net>
@@ -46,31 +44,33 @@ static void dummy(int x) { dummy(x-1); }
 #include <crypt.h>
 #endif
 
-char *crypt16(char *key, char *salt)
+char *
+crypt16(char *key, char *salt)
 {
-       static char res[25];
-       static char s2[3];
-       char *p;
+static char res[25];   /* Not threadsafe; like crypt() */
+static char s2[3];
+char *p;
+
+/* Clear the string of any previous data */
+memset (res, 0, sizeof (res));
 
-       /* Clear the string of any previous data */
-       memset (res, 0, sizeof (res));
+/* crypt the first part */
+if (!(p = crypt (key, salt))) return NULL;
+strncpy (res, p, 13);
 
-       /* crypt the first part */
-       p = crypt (key, salt);
-       strncpy (res, p, 13);
+if (strlen (key) > 8)
+  {
+  /* crypt the rest
+   * the first two characters of the first block (not counting
+   * the salt) make up the new salt */
 
-       if (strlen (key) > 8)
-       {
-               /* crypt the rest
-                * the first two characters of the first block (not counting
-                * the salt) make up the new salt */
-               strncpy (s2, &(res[2]), 2);
-               p = crypt (&(key[8]), s2);
-               strncpy (&(res[13]), &(p[2]), 11);
-               memset (s2, 0, sizeof (s2));
-       }
+  strncpy (s2, res+2, 2);
+  p = crypt (key+8, s2);
+  strncpy (res+13, p+2, 11);
+  memset (s2, 0, sizeof(s2));
+  }
 
-       return (res);
+return (res);
 }
 #endif