]> arthur.barton.de Git - netatalk.git/blobdiff - etc/uams/uams_randnum.c
Merge remote-tracking branch 'origin/branch-netatalk-3-0' into develop
[netatalk.git] / etc / uams / uams_randnum.c
index 3edd5a18ecaba86d6c34fd37bca0ab5e3d3ae95e..22687fcc8921cf74304f23791390580c326b8b2e 100644 (file)
@@ -1,5 +1,4 @@
 /* 
- * $Id: uams_randnum.c,v 1.17 2005-05-03 14:55:11 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * Copyright (c) 1999 Adrian Sun (asun@u.washington.edu) 
 
 #include <stdio.h>
 #include <stdlib.h>
-
-/* STDC check */
-#if STDC_HEADERS
 #include <string.h>
-#else /* STDC_HEADERS */
-#ifndef HAVE_STRCHR
-#define strchr index
-#define strrchr index
-#endif /* HAVE_STRCHR */
-char *strchr (), *strrchr ();
-#ifndef HAVE_MEMCPY
-#define memcpy(d,s,n) bcopy ((s), (d), (n))
-#define memmove(d,s,n) bcopy ((s), (d), (n))
-#endif /* ! HAVE_MEMCPY */
-#endif /* STDC_HEADERS */
-
-#ifdef HAVE_UNISTD_H
 #include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#ifdef HAVE_FCNTL_H
 #include <fcntl.h>
-#endif /* HAVE_FCNTL_H */
 #include <ctype.h>
 #include <pwd.h>
 #include <sys/stat.h>
 #include <sys/param.h>
+#include <arpa/inet.h>
 
 #include <atalk/logger.h>
-
-#include <netatalk/endian.h>
-
 #include <atalk/afp.h>
 #include <atalk/uam.h>
 
@@ -53,16 +31,12 @@ char *strchr (), *strrchr ();
 #include <crack.h>
 #endif /* USE_CRACKLIB */
 
-#ifndef __inline__
-#define __inline__
-#endif /* __inline__ */
-
 #define PASSWDLEN 8
 
 static C_Block         seskey;
 static Key_schedule    seskeysched;
 static struct passwd   *randpwd;
-static u_int8_t         randbuf[8];
+static uint8_t         randbuf[8];
 
 /* hash to a 16-bit number. this will generate completely harmless 
  * warnings on 64-bit machines. */
@@ -71,7 +45,7 @@ static u_int8_t         randbuf[8];
 
 
 /* handle ~/.passwd. courtesy of shirsch@ibm.net. */
-static  __inline__ int home_passwd(const struct passwd *pwd, 
+static  int home_passwd(const struct passwd *pwd, 
                                   const char *path, const int pathlen _U_, 
                                   unsigned char *passwd, const int len,
                                   const int set)
@@ -148,7 +122,7 @@ static int afppasswd(const struct passwd *pwd,
                     unsigned char *passwd, int len, 
                     const int set)
 {
-  u_int8_t key[DES_KEY_SZ*2];
+  uint8_t key[DES_KEY_SZ*2];
   char buf[MAXPATHLEN + 1], *p;
   Key_schedule schedule;
   FILE *fp;
@@ -304,16 +278,17 @@ static int randpass(const struct passwd *pwd, const char *file,
 /* randnum sends an 8-byte number and uses the user's password to
  * check against the encrypted reply. */
 static int rand_login(void *obj, char *username, int ulen, struct passwd **uam_pwd _U_,
-                        char *ibuf _U_, int ibuflen _U_,
-                        char *rbuf, int *rbuflen)
+                        char *ibuf _U_, size_t ibuflen _U_,
+                        char *rbuf, size_t *rbuflen)
 {
 
   char *passwdfile;
-  u_int16_t sessid;
-  int len, err;
+  uint16_t sessid;
+  size_t len;
+  int err;
  
   if (( randpwd = uam_getname(obj, username, ulen)) == NULL )
-    return AFPERR_PARAM; /* unknown user */
+    return AFPERR_NOTAUTH; /* unknown user */
   
   LOG(log_info, logtype_uams, "randnum/rand2num login: %s", username);
   if (uam_checkuser(randpwd) < 0)
@@ -350,10 +325,10 @@ static int rand_login(void *obj, char *username, int ulen, struct passwd **uam_p
 /* check encrypted reply. we actually setup the encryption stuff
  * here as the first part of randnum and rand2num are identical. */
 static int randnum_logincont(void *obj, struct passwd **uam_pwd,
-                            char *ibuf, int ibuflen _U_, 
-                            char *rbuf _U_, int *rbuflen)
+                            char *ibuf, size_t ibuflen _U_, 
+                            char *rbuf _U_, size_t *rbuflen)
 {
-  u_int16_t sessid;
+  uint16_t sessid;
 
   *rbuflen = 0;
 
@@ -389,10 +364,10 @@ static int randnum_logincont(void *obj, struct passwd **uam_pwd,
  *    and sends it back as part of the reply.
  */
 static int rand2num_logincont(void *obj, struct passwd **uam_pwd,
-                             char *ibuf, int ibuflen _U_, 
-                             char *rbuf, int *rbuflen)
+                             char *ibuf, size_t ibuflen _U_, 
+                             char *rbuf, size_t *rbuflen)
 {
-  u_int16_t sessid;
+  uint16_t sessid;
   unsigned int i;
 
   *rbuflen = 0;
@@ -439,10 +414,11 @@ static int rand2num_logincont(void *obj, struct passwd **uam_pwd,
  */
 static int randnum_changepw(void *obj, const char *username _U_, 
                            struct passwd *pwd, char *ibuf,
-                           int ibuflen _U_, char *rbuf _U_, int *rbuflen _U_)
+                           size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen _U_)
 {
     char *passwdfile;
-    int err, len;
+    int err;
+    size_t len;
 
     if (uam_checkuser(pwd) < 0)
       return AFPERR_ACCESS;
@@ -478,7 +454,7 @@ static int randnum_changepw(void *obj, const char *username _U_,
 #endif /* USE_CRACKLIB */
 
     if (!err) 
-      err = randpass(pwd, passwdfile, ibuf + PASSWDLEN, sizeof(seskey), 1);
+        err = randpass(pwd, passwdfile, (unsigned char *)ibuf + PASSWDLEN, sizeof(seskey), 1);
 
     /* zero out some fields */
     memset(&seskeysched, 0, sizeof(seskeysched));
@@ -494,11 +470,11 @@ static int randnum_changepw(void *obj, const char *username _U_,
 
 /* randnum login */
 static int randnum_login(void *obj, struct passwd **uam_pwd,
-                        char *ibuf, int ibuflen,
-                        char *rbuf, int *rbuflen)
+                        char *ibuf, size_t ibuflen,
+                        char *rbuf, size_t *rbuflen)
 {
     char *username;
-    int len, ulen;
+    size_t len, ulen;
 
     *rbuflen = 0;
 
@@ -506,7 +482,7 @@ static int randnum_login(void *obj, struct passwd **uam_pwd,
                              (void *) &username, &ulen) < 0)
         return AFPERR_MISC;
 
-    if (ibuflen <= 1) {
+    if (ibuflen < 2) {
         return( AFPERR_PARAM );
     }
 
@@ -529,12 +505,12 @@ static int randnum_login(void *obj, struct passwd **uam_pwd,
 
 /* randnum login ext */
 static int randnum_login_ext(void *obj, char *uname, struct passwd **uam_pwd,
-                        char *ibuf, int ibuflen,
-                        char *rbuf, int *rbuflen)
+                        char *ibuf, size_t ibuflen,
+                        char *rbuf, size_t *rbuflen)
 {
     char       *username;
-    int        len, ulen;
-    u_int16_t  temp16;
+    size_t     len, ulen;
+    uint16_t  temp16;
 
     *rbuflen = 0;