]> arthur.barton.de Git - netatalk.git/commitdiff
Use the right type for AFP function buffers size, size_t not int or unsigned int
authordidg <didg>
Thu, 15 Oct 2009 10:43:13 +0000 (10:43 +0000)
committerdidg <didg>
Thu, 15 Oct 2009 10:43:13 +0000 (10:43 +0000)
30 files changed:
etc/afpd/acls.c
etc/afpd/acls.h
etc/afpd/afs.c
etc/afpd/appl.c
etc/afpd/auth.c
etc/afpd/auth.h
etc/afpd/catsearch.c
etc/afpd/desktop.c
etc/afpd/desktop.h
etc/afpd/directory.c
etc/afpd/directory.h
etc/afpd/enumerate.c
etc/afpd/extattrs.c
etc/afpd/extattrs.h
etc/afpd/file.c
etc/afpd/file.h
etc/afpd/filedir.c
etc/afpd/filedir.h
etc/afpd/fork.c
etc/afpd/fork.h
etc/afpd/globals.h
etc/afpd/messages.c
etc/afpd/misc.h
etc/afpd/status.c
etc/afpd/status.h
etc/afpd/switch.c
etc/afpd/switch.h
etc/afpd/volume.c
etc/afpd/volume.h
include/atalk/uam.h

index 2da2816c3ca3857b7ffc148507b78b25ea180c34..a3310e72a89c45902b71836686c2ac47e5633bbe 100644 (file)
@@ -1,5 +1,5 @@
 /*
-   $Id: acls.c,v 1.4 2009-10-02 09:32:40 franklahm Exp $
+   $Id: acls.c,v 1.5 2009-10-15 10:43:13 didg Exp $
    Copyright (c) 2008,2009 Frank Lahm <franklahm@gmail.com>
 
    This program is free software; you can redistribute it and/or modify
@@ -393,7 +393,7 @@ static int map_acl(int type, ace_t *nfsv4_aces, darwin_ace_t *buf, int ace_count
 /* Get ACL from object omitting trivial ACEs. Map to Darwin ACL style and 
    store Darwin ACL at rbuf. Add length of ACL written to rbuf to *rbuflen.
    Returns 0 on success, -1 on error. */
-static int get_and_map_acl(char *name, char *rbuf, int *rbuflen)
+static int get_and_map_acl(char *name, char *rbuf, size_t *rbuflen)
 {
     int ace_count, mapped_aces, err;
     ace_t *aces;
@@ -717,7 +717,7 @@ exit:
  * Interface
  ********************************************************/
 
-int afp_access(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_access(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     int                        ret;
     struct vol         *vol;
@@ -776,7 +776,7 @@ int afp_access(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rb
     return ret;
 }
 
-int afp_getacl(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_getacl(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct vol         *vol;
     struct dir         *dir;
@@ -861,7 +861,7 @@ int afp_getacl(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rb
     return AFP_OK;
 }
 
-int afp_setacl(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_setacl(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct vol         *vol;
     struct dir         *dir;
index 5e0087d7f4fab3f3af01176a3e29c94c8f9fc715..b79faaff9ee7e612496e1aba34277bfcc53e5648 100644 (file)
@@ -1,5 +1,5 @@
 /*
-   $Id: acls.h,v 1.1 2009-02-02 11:55:00 franklahm Exp $
+   $Id: acls.h,v 1.2 2009-10-15 10:43:13 didg Exp $
    Copyright (c) 2008,2009 Frank Lahm <franklahm@gmail.com>
 
    This program is free software; you can redistribute it and/or modify
@@ -101,9 +101,9 @@ typedef struct {
 } darwin_acl_header_t;
 
 /* FP functions */
-extern int afp_access(AFPObj *, char *, int, char *, int *);
-extern int afp_getacl(AFPObj *, char *, int, char *, int *);
-extern int afp_setacl(AFPObj *, char *, int, char *, int *);
+int afp_access (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_getacl (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_setacl (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
 
 /* Parse ldap.conf */
 extern int acl_ldap_readconfig(char *name);
index 2c30865b0697de36681d2c329b5c94fe4c8c543d..d045cd4ee83abb334bec306b698f164105df0fb5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: afs.c,v 1.17 2005-04-28 20:49:40 bfernhomberg Exp $
+ * $Id: afs.c,v 1.18 2009-10-15 10:43:13 didg Exp $
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
  */
@@ -75,10 +75,7 @@ u_int32_t   *bsize;
     return( AFP_OK );
 }
 
-int afp_getdiracl(obj, ibuf, ibuflen, rbuf, rbuflen )
-AFPObj      *obj;
-char   *ibuf, *rbuf;
-int            ibuflen, *rbuflen;
+int afp_getdiracl(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
 {
     struct ViceIoctl   vi;
     struct vol         *vol;
@@ -165,10 +162,7 @@ extern struct dir  *curdir;
 /*
  * cmd | 0 | vid | did | pathtype | pathname | 0 | acl
  */
-int afp_setdiracl(obj, ibuf, ibuflen, rbuf, rbuflen )
-AFPObj      *obj;
-char   *ibuf, *rbuf;
-int            ibuflen, *rbuflen;
+int afp_setdiracl(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
 {
     struct ViceIoctl   vi;
     struct vol         *vol;
@@ -235,10 +229,7 @@ int                ibuflen, *rbuflen;
 extern C_Block         seskey;
 extern Key_schedule    seskeysched;
 
-int afp_afschangepw(obj, ibuf, ibuflen, rbuf, rbuflen )
-AFPObj      *obj;
-char   *ibuf, *rbuf;
-int            ibuflen, *rbuflen;
+int afp_afschangepw(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
 {
     char       name[ MAXKTCNAMELEN ], instance[ MAXKTCNAMELEN ];
     char       realm[ MAXKTCREALMLEN ];
index 16a268cad8ef0fcfa9f5526829438c7c954d1086..37850f62c471be718dd60f5046e3ce2325de32eb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: appl.c,v 1.17 2009-10-13 22:55:36 didg Exp $
+ * $Id: appl.c,v 1.18 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -143,7 +143,7 @@ makemacpath(char *mpath, int mpathlen, struct dir *dir, char *path)
 }
 
 
-int afp_addappl(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_addappl(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct vol         *vol;
     struct dir         *dir;
@@ -230,7 +230,7 @@ int afp_addappl(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *r
     return( AFP_OK );
 }
 
-int afp_rmvappl(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_rmvappl(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct vol         *vol;
     struct dir         *dir;
@@ -301,11 +301,12 @@ int afp_rmvappl(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *r
     return( AFP_OK );
 }
 
-int afp_getappl(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_getappl(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     struct vol         *vol;
     char               *p, *q;
-    int                        cc, buflen;
+    int                        cc; 
+    size_t             buflen;
     u_int16_t          vid, aindex, bitmap, len;
     u_char             creator[ 4 ];
     u_char             appltag[ 4 ];
index eee06dfe66f9bbba4449bad708988ff6480b25bd..b3748f839103fd5ce55dc37711e908ffa03d1c54 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: auth.c,v 1.67 2009-10-13 22:55:36 didg Exp $
+ * $Id: auth.c,v 1.68 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -158,13 +158,15 @@ static int send_reply(const AFPObj *obj, const int err)
     return AFP_OK;
 }
 
-static int afp_errpwdexpired(AFPObj *obj _U_, char *ibuf _U_, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+static int afp_errpwdexpired(AFPObj *obj _U_, char *ibuf _U_, size_t ibuflen _U_, 
+                             char *rbuf _U_, size_t *rbuflen)
 {
     *rbuflen = 0;
     return AFPERR_PWDEXPR;
 }
 
-static int afp_null_nolog(AFPObj *obj _U_, char *ibuf _U_, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+static int afp_null_nolog(AFPObj *obj _U_, char *ibuf _U_, size_t ibuflen _U_, 
+                          char *rbuf _U_, size_t *rbuflen)
 {
     *rbuflen = 0;
     return( AFPERR_NOOP );
@@ -396,8 +398,8 @@ static int login(AFPObj *obj, struct passwd *pwd, void (*logout)(void), int expi
 /* ---------------------- */
 int afp_zzz ( /* Function 122 */
     AFPObj       *obj,
-    char         *ibuf _U_, unsigned int ibuflen _U_, 
-    char *rbuf, unsigned int *rbuflen)
+    char         *ibuf _U_, size_t ibuflen _U_, 
+    char *rbuf, size_t *rbuflen)
 {
     u_int32_t   retdata;
 
@@ -454,8 +456,8 @@ static int create_session_key(AFPObj *obj)
 /* ---------------------- */
 int afp_getsession(
     AFPObj *obj,
-    char   *ibuf, unsigned int ibuflen, 
-    char   *rbuf, unsigned int *rbuflen)
+    char   *ibuf, size_t ibuflen, 
+    char   *rbuf, size_t *rbuflen)
 {
     u_int16_t           type;
     u_int32_t           idlen = 0;
@@ -467,6 +469,10 @@ int afp_getsession(
     *rbuflen = 0;
     tklen = 0;
 
+    if (ibuflen < 2 + sizeof(type)) {
+        return AFPERR_PARAM;
+    }
+
     ibuf += 2;
     ibuflen -= 2;
 
@@ -546,7 +552,7 @@ int afp_getsession(
 }
 
 /* ---------------------- */
-int afp_disconnect(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_disconnect(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     u_int16_t           type;
 
@@ -598,7 +604,7 @@ int afp_disconnect(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf _U_,
 }
 
 /* ---------------------- */
-static int get_version(AFPObj *obj, char *ibuf, int ibuflen, int len)
+static int get_version(AFPObj *obj, char *ibuf, size_t ibuflen, size_t len)
 {
     int num,i;
 
@@ -629,17 +635,18 @@ static int get_version(AFPObj *obj, char *ibuf, int ibuflen, int len)
 }
 
 /* ---------------------- */
-int afp_login(AFPObj *obj, char *ibuf, int ibuflen, char *rbuf, int *rbuflen)
+int afp_login(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
 {
     struct passwd *pwd = NULL;
-    int     len, i;
+    size_t len;
+    int     i;
 
     *rbuflen = 0;
 
     if ( nologin & 1)
         return send_reply(obj, AFPERR_SHUTDOWN );
 
-    if (ibuflen <= 1)
+    if (ibuflen < 2)
         return send_reply(obj, AFPERR_BADVERS );
 
     ibuf++;
@@ -650,12 +657,12 @@ int afp_login(AFPObj *obj, char *ibuf, int ibuflen, char *rbuf, int *rbuflen)
     if (i)
         return send_reply(obj, i );
 
+    if (ibuflen <= len)
+        return send_reply(obj, AFPERR_BADUAM);
+
     ibuf += len;
     ibuflen -= len;
 
-    if (ibuflen <= 1)
-        return send_reply(obj, AFPERR_BADUAM);
-
     len = (unsigned char) *ibuf++;
     ibuflen--;
 
@@ -679,10 +686,10 @@ int afp_login(AFPObj *obj, char *ibuf, int ibuflen, char *rbuf, int *rbuflen)
 }
 
 /* ---------------------- */
-int afp_login_ext(AFPObj *obj, char *ibuf, unsigned int ibuflen, char *rbuf, unsigned int *rbuflen)
+int afp_login_ext(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
 {
     struct passwd *pwd = NULL;
-    unsigned int  len;
+    size_t  len;
     int     i;
     char        type;
     u_int16_t   len16;
@@ -693,7 +700,7 @@ int afp_login_ext(AFPObj *obj, char *ibuf, unsigned int ibuflen, char *rbuf, uns
     if ( nologin & 1)
         return send_reply(obj, AFPERR_SHUTDOWN );
 
-    if (ibuflen <= 4)
+    if (ibuflen < 5)
         return send_reply(obj, AFPERR_BADVERS );
 
     ibuf++;
@@ -708,12 +715,12 @@ int afp_login_ext(AFPObj *obj, char *ibuf, unsigned int ibuflen, char *rbuf, uns
     if (i)
         return send_reply(obj, i );
 
+    if (ibuflen <= len)
+        return send_reply(obj, AFPERR_BADUAM);
+
     ibuf    += len;
     ibuflen -= len;
 
-    if (ibuflen <= 1)
-        return send_reply(obj, AFPERR_BADUAM);
-
     len = (unsigned char) *ibuf;
     ibuf++;
     ibuflen--;
@@ -731,7 +738,7 @@ int afp_login_ext(AFPObj *obj, char *ibuf, unsigned int ibuflen, char *rbuf, uns
         return send_reply(obj, AFPERR_BADUAM);
     }
     /* user name */
-    if (len <= 1 +sizeof(len16))
+    if (ibuflen <= 1 +sizeof(len16))
         return send_reply(obj, AFPERR_PARAM);
     type = *ibuf;
     username = ibuf;
@@ -806,12 +813,12 @@ int afp_login_ext(AFPObj *obj, char *ibuf, unsigned int ibuflen, char *rbuf, uns
 }
 
 /* ---------------------- */
-int afp_logincont(AFPObj *obj, char *ibuf, int ibuflen, char *rbuf, int *rbuflen)
+int afp_logincont(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
 {
     struct passwd *pwd = NULL;
     int err;
 
-    if ( afp_uam == NULL || afp_uam->u.uam_login.logincont == NULL ) {
+    if ( afp_uam == NULL || afp_uam->u.uam_login.logincont == NULL || ibuflen < 2 ) {
         *rbuflen = 0;
         return send_reply(obj, AFPERR_NOTAUTH );
     }
@@ -826,7 +833,7 @@ int afp_logincont(AFPObj *obj, char *ibuf, int ibuflen, char *rbuf, int *rbuflen
 }
 
 
-int afp_logout(AFPObj *obj, char *ibuf _U_, int ibuflen  _U_, char *rbuf  _U_, int *rbuflen  _U_)
+int afp_logout(AFPObj *obj, char *ibuf _U_, size_t ibuflen  _U_, char *rbuf  _U_, size_t *rbuflen  _U_)
 {
     LOG(log_info, logtype_afpd, "logout %s", obj->username);
     close_all_vol();
@@ -841,7 +848,7 @@ int afp_logout(AFPObj *obj, char *ibuf _U_, int ibuflen  _U_, char *rbuf  _U_, i
  *       to work. this also does a little pre-processing before it hands
  *       it off to the uam.
  */
-int afp_changepw(AFPObj *obj, char *ibuf, int ibuflen, char *rbuf, int *rbuflen)
+int afp_changepw(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
 {
     char username[MACFILELEN + 1], *start = ibuf;
     struct uam_obj *uam;
@@ -894,6 +901,9 @@ int afp_changepw(AFPObj *obj, char *ibuf, int ibuflen, char *rbuf, int *rbuflen)
         return AFPERR_PARAM;
 
     /* send it off to the uam. we really don't use ibuflen right now. */
+    if (ibuflen < (size_t)(ibuf - start)) 
+        return AFPERR_PARAM;
+    
     ibuflen -= (ibuf - start);
     ret = uam->u.uam_changepw(obj, username, pwd, ibuf, ibuflen,
                               rbuf, rbuflen);
@@ -908,7 +918,7 @@ int afp_changepw(AFPObj *obj, char *ibuf, int ibuflen, char *rbuf, int *rbuflen)
 
 
 /* FPGetUserInfo */
-int afp_getuserinfo(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_getuserinfo(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     u_int8_t  thisuser;
     u_int32_t id;
index 69ed23f7d8b3e86bb8ece322a7de4ae9e13c7b9a..21574c29e83f31c8a756a222df113f78dc9eb27d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: auth.h,v 1.8 2009-10-13 22:55:36 didg Exp $
+ * $Id: auth.h,v 1.9 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -38,14 +38,14 @@ extern gid_t        *groups;
 extern int     ngroups;
 
 /* FP functions */
-extern int     afp_login (AFPObj *, char *, int, char *, int *);
-extern int     afp_login_ext (AFPObj *, char *, unsigned int, char *, unsigned int *);
-extern int     afp_logincont (AFPObj *, char *, int, char *, int *);
-extern int     afp_changepw (AFPObj *, char *, int, char *, int *);
-extern int     afp_logout (AFPObj *, char *, int, char *, int *);
-extern int      afp_getuserinfo (AFPObj *, char *, int, char *, int *);
-extern int      afp_getsession (AFPObj *, char *, unsigned int, char *, unsigned int *);
-extern int      afp_disconnect (AFPObj *, char *, int, char *, int *);
-extern int      afp_zzz (AFPObj *, char *, unsigned int, char *, unsigned int *);
+int afp_login (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_login_ext (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_logincont (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_changepw (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_logout (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_getuserinfo (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_getsession (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_disconnect (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_zzz (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
 
 #endif /* auth.h */
index a06ecabc0effeeb65882242dde143cf929ffc631..8bc9adbed8e38933505fa9c7ebf638515e9bda46 100644 (file)
@@ -422,7 +422,8 @@ static int rslt_add ( struct vol *vol, struct path *path, char **buf, int ext)
 {
 
        char            *p = *buf;
-       int             ret, tbuf =0;
+       int             ret;
+       size_t          tbuf =0;
        u_int16_t       resultsize;
        int             isdir = S_ISDIR(path->st.st_mode); 
 
@@ -662,8 +663,8 @@ catsearch_end: /* Exiting catsearch: error condition */
 } /* catsearch() */
 
 /* -------------------------- */
-static int catsearch_afp(AFPObj *obj _U_, char *ibuf, int ibuflen,
-                  char *rbuf, int *rbuflen, int ext)
+static int catsearch_afp(AFPObj *obj _U_, char *ibuf, size_t ibuflen,
+                  char *rbuf, size_t *rbuflen, int ext)
 {
     struct vol *vol;
     u_int16_t   vid;
@@ -884,15 +885,15 @@ static int catsearch_afp(AFPObj *obj _U_, char *ibuf, int ibuflen,
 } /* catsearch_afp */
 
 /* -------------------------- */
-int afp_catsearch (AFPObj *obj, char *ibuf, int ibuflen,
-                  char *rbuf, int *rbuflen)
+int afp_catsearch (AFPObj *obj, char *ibuf, size_t ibuflen,
+                  char *rbuf, size_t *rbuflen)
 {
        return catsearch_afp( obj, ibuf, ibuflen, rbuf, rbuflen, 0);
 }
 
 
-int afp_catsearch_ext (AFPObj *obj, char *ibuf, int ibuflen,
-                  char *rbuf, int *rbuflen)
+int afp_catsearch_ext (AFPObj *obj, char *ibuf, size_t ibuflen,
+                  char *rbuf, size_t *rbuflen)
 {
        return catsearch_afp( obj, ibuf, ibuflen, rbuf, rbuflen, 1);
 }
index 0711b56819af5a2301f283d157cd240f99d40b86..b1f0c9cc6961d92f2cee77ec2618f531d9aeddb2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: desktop.c,v 1.39 2009-10-14 01:38:28 didg Exp $
+ * $Id: desktop.c,v 1.40 2009-10-15 10:43:13 didg Exp $
  *
  * See COPYRIGHT.
  *
@@ -40,7 +40,7 @@
 #include "mangle.h"
 
 
-int afp_opendt(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_opendt(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     struct vol *vol;
     u_int16_t  vid;
@@ -58,7 +58,7 @@ int afp_opendt(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rb
     return( AFP_OK );
 }
 
-int afp_closedt(AFPObj *obj _U_, char *ibuf _U_, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_closedt(AFPObj *obj _U_, char *ibuf _U_, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     *rbuflen = 0;
     return( AFP_OK );
@@ -116,14 +116,15 @@ static int iconopen(struct vol *vol, u_char creator[ 4 ], int flags, int mode)
     return 0;
 }
 
-int afp_addicon(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_addicon(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     struct vol         *vol;
 #ifndef NO_DDP
     struct iovec       iov[ 2 ];
 #endif
     u_char             fcreator[ 4 ], imh[ 12 ], irh[ 12 ], *p;
-    int                        itype, cc = AFP_OK, iovcnt = 0, buflen;
+    int                        itype, cc = AFP_OK, iovcnt = 0;
+    size_t             buflen;
     u_int32_t           ftype, itag;
     u_int16_t          bsize, rsize, vid;
 
@@ -340,7 +341,7 @@ static const u_char uicon[] = {
 };
 #endif
 
-int afp_geticoninfo(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_geticoninfo(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     struct vol *vol;
     u_char     fcreator[ 4 ], ih[ 12 ];
@@ -411,11 +412,11 @@ int afp_geticoninfo(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, in
 }
 
 
-int afp_geticon(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_geticon(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     struct vol *vol;
     off_t       offset;
-    int                rc, buflen;
+    ssize_t    rc, buflen;
     u_char     fcreator[ 4 ], ftype[ 4 ], itype, ih[ 12 ];
     u_int16_t  vid, bsize, rsize;
 
@@ -502,9 +503,10 @@ int afp_geticon(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf, int *rbufl
             return AFPERR_PARAM;
         }
 
-        if ((*rbuflen = dsi_readinit(dsi, rbuf, buflen, rc, AFP_OK)) < 0)
+        if ((buflen = dsi_readinit(dsi, rbuf, buflen, rc, AFP_OK)) < 0)
             goto geticon_exit;
 
+        *rbuflen = buflen;
         /* do to the streaming nature, we have to exit if we encounter
          * a problem. much confusion results otherwise. */
         while (*rbuflen > 0) {
@@ -746,7 +748,7 @@ static int ad_addcomment(struct vol *vol, struct path *path, char *ibuf)
 }
 
 /* ----------------------------- */
-int afp_addcomment(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_addcomment(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct vol         *vol;
     struct dir         *dir;
@@ -781,7 +783,7 @@ int afp_addcomment(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf _U_,
 }
 
 /* -------------------- */
-static int ad_getcomment(struct vol *vol, struct path *path, char *rbuf, int *rbuflen)
+static int ad_getcomment(struct vol *vol, struct path *path, char *rbuf, size_t *rbuflen)
 {
     struct adouble     ad, *adp;
     struct ofork        *of;
@@ -824,7 +826,7 @@ static int ad_getcomment(struct vol *vol, struct path *path, char *rbuf, int *rb
 }
 
 /* -------------------- */
-int afp_getcomment(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_getcomment(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     struct vol         *vol;
     struct dir         *dir;
@@ -894,7 +896,7 @@ static int ad_rmvcomment(struct vol *vol, struct path *path)
 }
 
 /* ----------------------- */
-int afp_rmvcomment(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_rmvcomment(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct vol         *vol;
     struct dir         *dir;
index fdd290e752a08fb88546311de86f4b3614d39bbb..039fa6aea77ea8ecc50f6f1cb0537bcd24ca9b57 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: desktop.h,v 1.5 2009-10-13 22:55:36 didg Exp $
+ * $Id: desktop.h,v 1.6 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1991 Regents of The University of Michigan.
  * All Rights Reserved.
@@ -44,16 +44,16 @@ extern char *mtoupath (const struct vol *, char *, cnid_t, int utf8);
 extern char    *utompath (const struct vol *, char *, cnid_t, int utf8);
 
 /* FP functions */
-extern int     afp_opendt (AFPObj *, char *, int, char *, int *);
-extern int     afp_addcomment (AFPObj *, char *, int, char *, int *);
-extern int     afp_getcomment (AFPObj *, char *, int, char *, int *);
-extern int     afp_rmvcomment (AFPObj *, char *, int, char *, int *);
-extern int     afp_addappl (AFPObj *, char *, int, char *, int *);
-extern int     afp_rmvappl (AFPObj *, char *, int, char *, int *);
-extern int     afp_getappl (AFPObj *, char *, int, char *, int *);
-extern int      afp_closedt (AFPObj *, char *, int, char *, int *);
-extern int     afp_addicon (AFPObj *, char *, int, char *, int *);
-extern int     afp_geticoninfo (AFPObj *, char *, int, char *, int *);
-extern int     afp_geticon (AFPObj *, char *, int, char *, int *);
+int afp_opendt (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_addcomment (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_getcomment (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_rmvcomment (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_addappl (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_rmvappl (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_getappl (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_closedt (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_addicon (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_geticoninfo (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_geticon (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
 
 #endif
index 619129e83e4ed20ea7a160b4c2e81459ef56ce92..a650806ff53597a5b6957847a18582d82fe0c2a5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: directory.c,v 1.107 2009-10-14 15:04:00 franklahm Exp $
+ * $Id: directory.c,v 1.108 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -1797,7 +1797,7 @@ int path_error(struct path *path, int error)
 }
 
 /* ----------------------------- */
-int afp_setdirparams(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_setdirparams(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct vol *vol;
     struct dir *dir;
@@ -2215,7 +2215,7 @@ setdirparam_done:
     return err;
 }
 
-int afp_syncdir(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_syncdir(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
 #ifdef HAVE_DIRFD
     DIR                  *dp;
@@ -2305,7 +2305,7 @@ int afp_syncdir(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf _U_, in
     return ( AFP_OK );
 }
 
-int afp_createdir(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_createdir(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     struct adouble     ad;
     struct vol         *vol;
@@ -2565,7 +2565,7 @@ delete_done:
     return err;
 }
 
-int afp_mapid(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_mapid(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     struct passwd      *pw;
     struct group       *gr;
@@ -2678,7 +2678,7 @@ int afp_mapid(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen
     return( AFP_OK );
 }
 
-int afp_mapname(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_mapname(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     struct passwd      *pw;
     struct group       *gr;
@@ -2770,7 +2770,7 @@ int afp_mapname(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *r
 /* ------------------------------------
   variable DID support 
 */
-int afp_closedir(AFPObj *obj _U_, char *ibuf _U_, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_closedir(AFPObj *obj _U_, char *ibuf _U_, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
 #if 0
     struct vol   *vol;
@@ -2806,7 +2806,7 @@ int afp_closedir(AFPObj *obj _U_, char *ibuf _U_, int ibuflen _U_, char *rbuf _U
 /* did creation gets done automatically 
  * there's a pb again with case but move it to cname
 */
-int afp_opendir(AFPObj *obj _U_, char *ibuf, int ibuflen  _U_, char *rbuf, int *rbuflen)
+int afp_opendir(AFPObj *obj _U_, char *ibuf, size_t ibuflen  _U_, char *rbuf, size_t *rbuflen)
 {
     struct vol         *vol;
     struct dir         *parentdir;
index ee8978d6cb6cb39c272e67ec82cd8bc9ee4b9a64..6a27866217a61c6487393f09ea3a3c9262d1618b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: directory.h,v 1.29 2009-10-13 22:55:36 didg Exp $
+ * $Id: directory.h,v 1.30 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1991 Regents of The University of Michigan.
  * All Rights Reserved.
@@ -155,21 +155,21 @@ extern hash_t *dirhash (void);
 extern char *check_dirent (const struct vol *, char *);
 
 /* FP functions */
-extern int     afp_createdir (AFPObj *, char *, int, char *, int *);
-extern int      afp_opendir (AFPObj *, char *, int, char *, int *);
-extern int     afp_setdirparams (AFPObj *, char *, int, char *, int *);
-extern int      afp_closedir (AFPObj *, char *, int, char *, int *);
-extern int     afp_mapid (AFPObj *, char *, int, char *, int *);
-extern int     afp_mapname (AFPObj *, char *, int, char *, int *);
-extern int     afp_syncdir (AFPObj *, char *, int, char *, int *);
+int afp_createdir (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_opendir (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_setdirparams (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_closedir (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_mapid (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_mapname (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_syncdir (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
 
 /* from enumerate.c */
-extern int     afp_enumerate (AFPObj *, char *, unsigned int, char *, unsigned int *);
-extern int     afp_enumerate_ext (AFPObj *, char *, unsigned int, char *, unsigned int *);
-extern int     afp_enumerate_ext2 (AFPObj *, char *, unsigned int, char *, unsigned int *);
+int afp_enumerate (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_enumerate_ext (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_enumerate_ext2 (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
 
 /* from catsearch.c */
-extern int     afp_catsearch (AFPObj *, char *, int, char *, int *);
-extern int     afp_catsearch_ext (AFPObj *, char *, int, char *, int *);
+int afp_catsearch (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_catsearch_ext (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
 
 #endif
index a0453d94809f9209928661ca9c0589437db5af76..4608ecb4e3fb03edae1ecdcd366d94b742a69269 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: enumerate.c,v 1.46 2009-10-14 15:04:00 franklahm Exp $
+ * $Id: enumerate.c,v 1.47 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -155,15 +155,16 @@ for_each_dirent(const struct vol *vol, char *name, dir_loop fn, void *data)
 #define REPLY_PARAM_MAXLEN (4 + 104 + 1 + MACFILELEN + 4 + 2 + 255 + 1)
 
 /* ----------------------------- */
-static int enumerate(AFPObj *obj _U_, char *ibuf, unsigned int ibuflen _U_, 
+static int enumerate(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, 
     char *rbuf, 
-    unsigned int *rbuflen, 
+    size_t *rbuflen, 
     int ext)
 {
     static struct savedir      sd = { 0, 0, 0, NULL, NULL, 0 };
     struct vol                 *vol;
     struct dir                 *dir;
-    int                                did, ret, esz, len, first = 1;
+    int                                did, ret, len, first = 1;
+    size_t                     esz;
     char                        *data, *start;
     u_int16_t                  vid, fbitmap, dbitmap, reqcnt, actcnt = 0;
     u_int16_t                  temp16;
@@ -450,25 +451,25 @@ static int enumerate(AFPObj *obj _U_, char *ibuf, unsigned int ibuflen _U_,
 }
 
 /* ----------------------------- */
-int afp_enumerate(AFPObj *obj, char *ibuf, unsigned int ibuflen, 
+int afp_enumerate(AFPObj *obj, char *ibuf, size_t ibuflen, 
     char *rbuf, 
-    unsigned int *rbuflen)
+    size_t *rbuflen)
 {
     return enumerate(obj, ibuf,ibuflen ,rbuf,rbuflen , 0);
 }
 
 /* ----------------------------- */
-int afp_enumerate_ext(AFPObj *obj, char *ibuf, unsigned int ibuflen, 
+int afp_enumerate_ext(AFPObj *obj, char *ibuf, size_t ibuflen, 
     char *rbuf, 
-    unsigned int *rbuflen)
+    size_t *rbuflen)
 {
     return enumerate(obj, ibuf,ibuflen ,rbuf,rbuflen , 1);
 }
 
 /* ----------------------------- */
-int afp_enumerate_ext2(AFPObj *obj, char *ibuf, unsigned int ibuflen, 
+int afp_enumerate_ext2(AFPObj *obj, char *ibuf, size_t ibuflen, 
     char *rbuf, 
-    unsigned int *rbuflen)
+    size_t *rbuflen)
 {
     return enumerate(obj, ibuf,ibuflen ,rbuf,rbuflen , 2);
 }
index 2900be3d2b7ab91da36d846fbb28069b685ef198..429cff0029fd272ca721519a7c930c549c2c95d6 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  $Id: extattrs.c,v 1.5 2009-10-14 15:04:00 franklahm Exp $
+  $Id: extattrs.c,v 1.6 2009-10-15 10:43:13 didg Exp $
   Copyright (c) 2009 Frank Lahm <franklahm@gmail.com>
 
   This program is free software; you can redistribute it and/or modify
@@ -72,7 +72,7 @@ static void hexdump(void *m, size_t l) {
   EA names, secondly it wants these names. In order to avoid scanning EAs twice
   we cache them in a static buffer.
 */
-int afp_listextattr(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_listextattr(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     int                 count, ret, oflag = 0;
     uint16_t            vid, bitmap;
@@ -231,7 +231,7 @@ exit:
     return ret;
 }
 
-int afp_getextattr(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_getextattr(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     int                 ret, oflag = 0;
     uint16_t            vid, bitmap;
@@ -326,7 +326,7 @@ int afp_getextattr(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int
     return ret;
 }
 
-int afp_setextattr(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_setextattr(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     int                 oflag = O_CREAT | O_WRONLY, ret;
     uint16_t            vid, bitmap;
@@ -414,7 +414,7 @@ int afp_setextattr(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int
     return ret;
 }
 
-int afp_remextattr(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_remextattr(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     int                 oflag = O_RDONLY, ret;
     uint16_t            vid, bitmap;
index 90b034bd829813a25df4f98c9f3e944b88bc944b..64e8482d233ae4a20c5efe6a1b6ca92e1342c470 100644 (file)
@@ -1,5 +1,5 @@
 /*
-   $Id: extattrs.h,v 1.2 2009-10-02 09:32:40 franklahm Exp $
+   $Id: extattrs.h,v 1.3 2009-10-15 10:43:13 didg Exp $
    Copyright (c) 2009 Frank Lahm <franklahm@gmail.com>
 
    This program is free software; you can redistribute it and/or modify
@@ -17,9 +17,9 @@
 #define AFPD_EXT_ATTRS_H
 
 /* AFP funcs */
-extern int afp_listextattr(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen);
-extern int afp_getextattr(AFPObj *obj _U_ , char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen);
-extern int afp_setextattr(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen);
-extern int afp_remextattr(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen);
+int afp_listextattr (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_getextattr (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_setextattr(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_remextattr(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
 
 #endif /* AFPD_EXT_ATTRS_H */
index 91284a57d52dad8d8231b16ca9d42c3e8bb1204b..db8fdfe76cb5541c7662bf41c68af763fc867f3a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: file.c,v 1.113 2009-10-14 15:04:00 franklahm Exp $
+ * $Id: file.c,v 1.114 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -238,7 +238,7 @@ u_int32_t aint = 0;
 int getmetadata(struct vol *vol,
                  u_int16_t bitmap,
                  struct path *path, struct dir *dir, 
-                 char *buf, int *buflen, struct adouble *adp)
+                 char *buf, size_t *buflen, struct adouble *adp)
 {
     char               *data, *l_nameoff = NULL, *upath;
     char                *utf_nameoff = NULL;
@@ -510,7 +510,7 @@ int getmetadata(struct vol *vol,
 int getfilparams(struct vol *vol,
                  u_int16_t bitmap,
                  struct path *path, struct dir *dir, 
-                 char *buf, int *buflen )
+                 char *buf, size_t *buflen )
 {
     struct adouble     ad, *adp;
     struct ofork        *of;
@@ -563,7 +563,7 @@ int getfilparams(struct vol *vol,
 }
 
 /* ----------------------------- */
-int afp_createfile(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_createfile(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct adouble     ad, *adp;
     struct vol         *vol;
@@ -686,7 +686,7 @@ createfile_done:
     return (retvalue);
 }
 
-int afp_setfilparams(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_setfilparams(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct vol *vol;
     struct dir *dir;
@@ -1146,7 +1146,7 @@ u_int32_t   hint;
 
 /* -----------------------------------
 */
-int afp_copyfile(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_copyfile(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct vol *s_vol, *d_vol;
     struct dir *dir;
@@ -1593,7 +1593,7 @@ int deletefile(const struct vol *vol, char *file, int checkAttrib)
 
 /* ------------------------------------ */
 /* return a file id */
-int afp_createid(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_createid(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     struct stat         *st;
     struct vol         *vol;
@@ -1754,13 +1754,14 @@ reenumerate_id(struct vol *vol, char *name, struct dir *dir)
 
 /* ------------------------------
    resolve a file id */
-int afp_resolveid(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_resolveid(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     struct vol         *vol;
     struct dir         *dir;
     char               *upath;
     struct path         path;
-    int                 err, buflen, retry=0;
+    int                 err, retry=0;
+    size_t             buflen;
     cnid_t             id, cnid;
     u_int16_t          vid, bitmap;
 
@@ -1867,7 +1868,7 @@ retry:
 }
 
 /* ------------------------------ */
-int afp_deleteid(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_deleteid(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct stat         st;
     struct vol         *vol;
@@ -2001,7 +2002,7 @@ static struct adouble *find_adouble(struct path *path, struct ofork **of, struct
 
 #define APPLETEMP ".AppleTempXXXXXX"
 
-int afp_exchangefiles(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_exchangefiles(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct stat         srcst, destst;
     struct vol         *vol;
index 62acd0b005355a4236a384683343eb3446bde618..c4253ca07d3849df446e9631407e41eb5c8efbec 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: file.h,v 1.23 2009-10-14 01:38:28 didg Exp $
+ * $Id: file.h,v 1.24 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1991 Regents of The University of Michigan.
  * All Rights Reserved.
@@ -112,7 +112,7 @@ extern struct extmap        *getextmap (const char *);
 extern struct extmap   *getdefextmap (void);
 
 extern int getfilparams (struct vol *, u_int16_t, struct path *,
-                                 struct dir *, char *buf, int *);
+                                 struct dir *, char *buf, size_t *);
 
 extern int setfilparams (struct vol *, struct path *, u_int16_t, char *);
 extern int renamefile   (const struct vol *, char *, char *, char *, struct adouble *);
@@ -120,7 +120,7 @@ extern int copyfile     (const struct vol *, const struct vol *, char *, char *,
 extern int deletefile   (const struct vol *, char *, int);
 
 extern int getmetadata  (struct vol *vol, u_int16_t bitmap, struct path *path, 
-                         struct dir *dir, char *buf, int *buflen, struct adouble *adp);
+                         struct dir *dir, char *buf, size_t *buflen, struct adouble *adp);
 
 extern void *get_finderinfo (const struct vol *, const char *, struct adouble *, void *);
 
@@ -131,12 +131,12 @@ extern u_int32_t get_id  (struct vol *, struct adouble *, const struct stat *,
                                 const cnid_t , char *, const int );
 
 /* FP functions */
-extern int      afp_exchangefiles (AFPObj *, char *, int, char *, int *);
-extern int     afp_setfilparams (AFPObj *, char *, int, char *, int *);
-extern int     afp_copyfile (AFPObj *, char *, int, char *, int *);
-extern int     afp_createfile (AFPObj *, char *, int, char *, int *);
-extern int      afp_createid (AFPObj *, char *, int, char *, int *);
-extern int      afp_resolveid (AFPObj *, char *, int, char *, int *);
-extern int      afp_deleteid (AFPObj *, char *, int, char *, int *);
+int afp_exchangefiles (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_setfilparams (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_copyfile (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_createfile (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_createid (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_resolveid (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_deleteid (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
 
 #endif
index 2e26e51951897dc85fae6e84ce48770960d1e379..1bef6dfdb0c2f698284b6c53e509a5e1c4295a9a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: filedir.c,v 1.57 2009-10-14 15:04:01 franklahm Exp $
+ * $Id: filedir.c,v 1.58 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -130,13 +130,14 @@ more information */
 }
 #endif
 
-int afp_getfildirparams(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_getfildirparams(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     struct stat                *st;
     struct vol         *vol;
     struct dir         *dir;
     u_int32_t           did;
-    int                        buflen, ret;
+    int                        ret;
+    size_t             buflen;
     u_int16_t          fbitmap, dbitmap, vid;
     struct path         *s_path;
 
@@ -225,7 +226,7 @@ int afp_getfildirparams(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf
     return( AFP_OK );
 }
 
-int afp_setfildirparams(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_setfildirparams(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct stat        *st;
     struct vol *vol;
@@ -434,7 +435,7 @@ static int moveandrename(const struct vol *vol, struct dir *sdir, char *oldname,
 }
 
 /* -------------------------------------------- */
-int afp_rename(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_rename(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct vol *vol;
     struct dir *sdir;
@@ -517,7 +518,7 @@ int afp_rename(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rb
 }
 
 /* ------------------------------- */
-int afp_delete(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_delete(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct vol         *vol;
     struct dir         *dir;
@@ -625,7 +626,7 @@ char *ctoupath(const struct vol *vol, struct dir *dir, char *name)
 }
 
 /* ------------------------- */
-int afp_moveandrename(AFPObj *obj, char *ibuf, int ibuflen  _U_, char *rbuf _U_, int *rbuflen)
+int afp_moveandrename(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct vol *vol;
     struct dir *sdir, *ddir;
index bd4da87d3c223b98010c6caae1f0c62dba131019..c5b857567db4fdf6e1318c8c60d897ae7afbaf82 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: filedir.h,v 1.10 2009-10-13 22:55:37 didg Exp $
+ * $Id: filedir.h,v 1.11 2009-10-15 10:43:13 didg Exp $
  */
 
 #ifndef AFPD_FILEDIR_H
@@ -19,14 +19,13 @@ extern char         *absupath (const struct vol *, struct dir *,
 extern int             veto_file (const char *veto_str, const char *path);
 extern int             check_name (const struct vol *vol, char *name);
 
+extern int matchfile2dirperms (char *, struct vol *, int);
+
 /* FP functions */
-extern int     matchfile2dirperms (char *, struct vol *, int);
-extern int     afp_moveandrename (AFPObj *, char *, int, char *, int *);
-extern int     afp_rename (AFPObj *, char *, int, char *, int *);
-extern int     afp_delete (AFPObj *, char *, int, char *, int *);
-extern int     afp_getfildirparams (AFPObj *, char *, int, char *,
-                                        int *);
-extern int     afp_setfildirparams (AFPObj *, char *, int, char *,
-                                        int *);
+int afp_moveandrename (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_rename (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_delete (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_getfildirparams (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_setfildirparams (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
 
 #endif
index e1ade8d1a7b97a9fdb56b1b70e3171b0e65eb513..f7d27826da01eeda01ebcb0d0269ae196dce0858 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: fork.c,v 1.64 2009-10-14 01:38:28 didg Exp $
+ * $Id: fork.c,v 1.65 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -48,7 +48,7 @@
 struct ofork *writtenfork;
 #endif
 
-static int getforkparams(struct ofork *ofork, u_int16_t bitmap, char *buf, int *buflen)
+static int getforkparams(struct ofork *ofork, u_int16_t bitmap, char *buf, size_t *buflen)
 {
     struct path         path;
     struct stat                *st;
@@ -246,13 +246,14 @@ static int fork_setmode(struct adouble *adp, int eid, int access, int ofrefnum)
 }
 
 /* ----------------------- */
-int afp_openfork(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_openfork(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     struct vol         *vol;
     struct dir         *dir;
     struct ofork       *ofork, *opened;
     struct adouble      *adsame = NULL;
-    int                        buflen, ret, adflags, eid;
+    size_t             buflen;
+    int                        ret, adflags, eid;
     u_int32_t           did;
     u_int16_t          vid, bitmap, access, ofrefnum;
     char               fork, *path, *upath;
@@ -517,7 +518,7 @@ openfork_err:
     return ret;
 }
 
-int afp_setforkparams(AFPObj *obj _U_, char *ibuf, int ibuflen, char *rbuf _U_, int *rbuflen)
+int afp_setforkparams(AFPObj *obj _U_, char *ibuf, size_t ibuflen, char *rbuf _U_, size_t *rbuflen)
 {
     struct ofork       *ofork;
     off_t              size;
@@ -654,7 +655,7 @@ afp_setfork_err:
 
 
 /* ---------------------- */
-static int byte_lock(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen, int is64)
+static int byte_lock(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen, int is64)
 {
     struct ofork       *ofork;
     off_t               offset, length;
@@ -733,13 +734,13 @@ static int byte_lock(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, i
 }
 
 /* --------------------------- */
-int afp_bytelock(AFPObj *obj, char *ibuf, int ibuflen, char *rbuf, int *rbuflen)
+int afp_bytelock(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
 {
    return byte_lock ( obj, ibuf, ibuflen, rbuf, rbuflen , 0);
 }
 
 /* --------------------------- */
-int afp_bytelock_ext(AFPObj *obj, char *ibuf, int ibuflen, char *rbuf, int *rbuflen)
+int afp_bytelock_ext(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
 {
    return byte_lock ( obj, ibuf, ibuflen, rbuf, rbuflen , 1);
 }
@@ -769,7 +770,7 @@ static int crlf(struct ofork *of)
 static ssize_t read_file(struct ofork *ofork, int eid,
                                     off_t offset, u_char nlmask,
                                     u_char nlchar, char *rbuf,
-                                    int *rbuflen, const int xlate)
+                                    size_t *rbuflen, const int xlate)
 {
     ssize_t cc;
     int eof = 0;
@@ -781,7 +782,7 @@ static ssize_t read_file(struct ofork *ofork, int eid,
         *rbuflen = 0;
         return( AFPERR_PARAM );
     }
-    if ( cc < *rbuflen ) {
+    if ( (size_t)cc < *rbuflen ) {
         eof = 1;
     }
 
@@ -834,11 +835,12 @@ static ssize_t read_file(struct ofork *ofork, int eid,
  *
  * with dsi, should we check that reqcount < server quantum? 
 */
-static int read_fork(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen, int is64)
+static int read_fork(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen, int is64)
 {
     struct ofork       *ofork;
     off_t              offset, saveoff, reqcount, savereqcount;
-    int                        cc, err, eid, xlate = 0;
+    ssize_t            cc, err;
+    int                        eid, xlate = 0;
     u_int16_t          ofrefnum;
     u_char             nlmask, nlchar;
     
@@ -931,9 +933,9 @@ static int read_fork(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf, int *
         /* dsi_readinit() returns size of next read buffer. by this point,
          * we know that we're sending some data. if we fail, something
          * horrible happened. */
-        if ((*rbuflen = dsi_readinit(dsi, rbuf, *rbuflen, reqcount, err)) < 0)
+        if ((cc = dsi_readinit(dsi, rbuf, *rbuflen, reqcount, err)) < 0)
             goto afp_read_exit;
-
+        *rbuflen = cc;
         /* due to the nature of afp packets, we have to exit if we get
            an error. we can't do this with translation on. */
 #if 0 /* ifdef WITH_SENDFILE */
@@ -1004,19 +1006,19 @@ afp_read_err:
 }
 
 /* ---------------------- */
-int afp_read(AFPObj *obj, char *ibuf, int ibuflen, char *rbuf, int *rbuflen)
+int afp_read(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
 {
     return read_fork(obj, ibuf, ibuflen, rbuf, rbuflen, 0);
 }
 
 /* ---------------------- */
-int afp_read_ext(AFPObj *obj, char *ibuf, int ibuflen, char *rbuf, int *rbuflen)
+int afp_read_ext(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
 {
     return read_fork(obj, ibuf, ibuflen, rbuf, rbuflen, 1);
 }
 
 /* ---------------------- */
-int afp_flush(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_flush(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct vol *vol;
     u_int16_t vid;
@@ -1033,7 +1035,7 @@ int afp_flush(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf _U_, int
     return( AFP_OK );
 }
 
-int afp_flushfork(AFPObj *obj _U_, char        *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_flushfork(AFPObj *obj _U_, char        *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct ofork       *ofork;
     u_int16_t          ofrefnum;
@@ -1060,7 +1062,7 @@ int afp_flushfork(AFPObj *obj _U_, char   *ibuf, int ibuflen _U_, char *rbuf _U_,
   fsync(2) on OSX is implemented differently than on other platforms.
   see: http://mirror.linux.org.au/pub/linux.conf.au/2007/video/talks/278.pdf.
  */
-int afp_syncfork(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_syncfork(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct ofork        *ofork;
     u_int16_t           ofrefnum;
@@ -1126,7 +1128,7 @@ int flushfork(struct ofork *ofork)
     return( err );
 }
 
-int afp_closefork(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_closefork(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct ofork       *ofork;
     u_int16_t          ofrefnum;
@@ -1188,7 +1190,7 @@ static ssize_t write_file(struct ofork *ofork, int eid,
 /* FPWrite. NOTE: on an error, we always use afp_write_err as
  * the client may have sent us a bunch of data that's not reflected 
  * in reqcount et al. */
-static int write_fork(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen, int is64)
+static int write_fork(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen, int is64)
 {
     struct ofork       *ofork;
     off_t              offset, saveoff, reqcount;
@@ -1367,7 +1369,7 @@ afp_write_err:
 }
 
 /* ---------------------------- */
-int afp_write(AFPObj *obj, char *ibuf, int ibuflen, char *rbuf, int *rbuflen)
+int afp_write(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
 {
     return write_fork(obj, ibuf, ibuflen, rbuf, rbuflen, 0);
 }
@@ -1375,13 +1377,13 @@ int afp_write(AFPObj *obj, char *ibuf, int ibuflen, char *rbuf, int *rbuflen)
 /* ---------------------------- 
  * FIXME need to deal with SIGXFSZ signal
 */
-int afp_write_ext(AFPObj *obj, char *ibuf, int ibuflen, char *rbuf, int *rbuflen)
+int afp_write_ext(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
 {
     return write_fork(obj, ibuf, ibuflen, rbuf, rbuflen, 1);
 }
 
 /* ---------------------------- */
-int afp_getforkparams(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_getforkparams(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     struct ofork       *ofork;
     int                        buflen, ret;
index 7d69337678304b57ee1c08ee3077d3a55585237c..fdc4a1eeb817d77526fedc5f5a53d783a5aa725e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: fork.h,v 1.15 2009-10-14 01:38:28 didg Exp $
+ * $Id: fork.h,v 1.16 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -80,18 +80,18 @@ extern int          flushfork    (struct ofork *);
 extern int          getforkmode  (struct adouble *, int , int );
 
 /* FP functions */
-extern int     afp_openfork (AFPObj *, char *, int, char *, int *);
-extern int     afp_bytelock (AFPObj *, char *, int, char *, int *);
-extern int     afp_getforkparams (AFPObj *, char *, int, char *, int *);
-extern int     afp_setforkparams (AFPObj *, char *, int, char *, int *);
-extern int     afp_read (AFPObj *, char *, int, char *, int *);
-extern int     afp_write (AFPObj *, char *, int, char *, int *);
-extern int     afp_flushfork (AFPObj *, char *, int, char *, int *);
-extern int     afp_flush (AFPObj *, char *, int, char *, int *);
-extern int     afp_closefork (AFPObj *, char *, int, char *, int *);
+int afp_openfork (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_bytelock (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_getforkparams (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_setforkparams (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_read (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_write (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_flushfork (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_flush (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_closefork (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
 
-extern int     afp_bytelock_ext (AFPObj *, char *, int, char *, int *);
-extern int     afp_read_ext (AFPObj *, char *, int, char *, int *);
-extern int     afp_write_ext (AFPObj *, char *, int, char *, int *);
-extern int  afp_syncfork (AFPObj *, char *, int, char *, int *);
+int afp_bytelock_ext (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_read_ext (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_write_ext (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen); 
+int afp_syncfork (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
 #endif
index 2439e3115058a3073b232b082a8939a8ebb1ab23..76ffc07eda90dda0afae1d90047bf099f3a502c3 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: globals.h,v 1.27 2009-10-13 22:55:37 didg Exp $
+ * $Id: globals.h,v 1.28 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -86,7 +86,7 @@ struct afp_options {
 };
 
 #define AFPOBJ_TMPSIZ (MAXPATHLEN)
-typedef struct AFPObj {
+typedef struct _AFPObj {
     int proto;
     unsigned long servernum;
     void *handle, *config;
@@ -108,6 +108,9 @@ typedef struct AFPObj {
 #endif
 } AFPObj;
 
+/* typedef for AFP functions handlers */
+typedef int (*AFPCmd)(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+
 extern int             afp_version;
 extern int             afp_errno;
 extern unsigned char   nologin;
index d5afefd9f5f385e38560d5d99425a00b28b94fb2..014ce4b5c036758572a972f4c6b6d6335b0539fb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: messages.c,v 1.19 2009-10-13 22:55:37 didg Exp $
+ * $Id: messages.c,v 1.20 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1997 Adrian Sun (asun@zoology.washington.edu)
  * All Rights Reserved.  See COPYRIGHT.
@@ -112,7 +112,7 @@ void readmessage(AFPObj *obj)
 #endif /* SERVERTEXT */
 }
 
-int afp_getsrvrmesg(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_getsrvrmesg(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     char *message;
     u_int16_t type, bitmap;
index d5c44007063d022703a91dee0012ee8507071909..dded79b13bd2d1b762acd5d7b9374dc2dc7b18cc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: misc.h,v 1.4 2009-10-13 22:55:37 didg Exp $
+ * $Id: misc.h,v 1.5 2009-10-15 10:43:13 didg Exp $
  */
 
 #ifndef AFPD_MISC_H
 
 /* FP functions */
 /* messages.c */
-extern int     afp_getsrvrmesg (AFPObj *, char *, int, char *, int *);
+int    afp_getsrvrmesg (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
 
 /* afs.c */
 #ifdef AFS
-extern int     afp_getdiracl (AFPObj *, char *, int, char *, int *);
-extern int     afp_setdiracl (AFPObj *, char *, int, char *, int *);
+int    afp_getdiracl (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int    afp_setdiracl (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
 #else /* AFS */
 #define afp_getdiracl  NULL
 #define afp_setdiracl  NULL
 #endif /* AFS */
 
 #if defined( AFS ) && defined( UAM_AFSKRB )
-extern int     afp_afschangepw (AFPObj *, char *, int, char *, int *);
+int    afp_afschangepw (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
 #else /* AFS && UAM_AFSKRB */
 #define afp_afschangepw        NULL
 #endif /* AFS && UAM_AFSKRB */
index 8c61af9652294d6e58cd415485613ba5ae0ceaec..3950d6a39a38c800549b34ffcfb7399ec38ee2fe 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: status.c,v 1.24 2009-10-13 22:55:37 didg Exp $
+ * $Id: status.c,v 1.25 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -574,7 +574,7 @@ void status_init(AFPConfig *aspconfig, AFPConfig *dsiconfig,
 }
 
 /* this is the same as asp/dsi_getstatus */
-int afp_getsrvrinfo(AFPObj *obj, char *ibuf _U_, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_getsrvrinfo(AFPObj *obj, char *ibuf _U_, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     AFPConfig *config = obj->config;
 
index 4b927fad07e62daef83c55714e2e7fc36d839cb7..4b7fb7e7835a85ef276f6d58c7acca58adf6321d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: status.h,v 1.8 2009-10-13 22:55:37 didg Exp $
+ * $Id: status.h,v 1.9 2009-10-15 10:43:13 didg Exp $
  */
 
 #ifndef AFPD_STATUS_H
@@ -44,6 +44,7 @@ extern void status_uams (char * /*status*/, const char * /*authlist*/);
 extern void status_reset (void );
 extern void status_init (AFPConfig *, AFPConfig *,
                                  const struct afp_options *);
-extern int      afp_getsrvrinfo (AFPObj *, char *, int, char *, int *);
+/* FP functions */
+int afp_getsrvrinfo (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
 
 #endif
index 3a8855da72d484b1205f5f6e9a6b6eb3bfaac7d6..2e2c69e01212f56e25df986d83c46e478c42ad55 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: switch.c,v 1.18 2009-10-13 22:55:37 didg Exp $
+ * $Id: switch.c,v 1.19 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1991 Regents of The University of Michigan.
  * All Rights Reserved.
@@ -50,7 +50,7 @@
 #include "acls.h"
 #endif
 
-static int afp_null(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+static int afp_null(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf _U_,  size_t *rbuflen)
 {
     LOG(log_info, logtype_afpd, "afp_null handle %d", *ibuf );
     *rbuflen = 0;
@@ -62,7 +62,7 @@ static int afp_null(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf _U_
  * Routines marked "afp_null" are AFP functions
  * which are not yet implemented. A fine line...
  */
-int    (*preauth_switch[])() = {
+static AFPCmd preauth_switch[] = {
     NULL, NULL, NULL, NULL,
     NULL, NULL, NULL, NULL,                                    /*   0 -   7 */
     NULL, NULL, NULL, NULL,
@@ -129,9 +129,9 @@ int (*preauth_switch[])() = {
     NULL, NULL, NULL, NULL,                                    /* 248 - 255 */
 };
 
-int    (**afp_switch)() = preauth_switch;
+AFPCmd *afp_switch = preauth_switch;
 
-int    (*postauth_switch[])() = {
+AFPCmd postauth_switch[] = {
     NULL, afp_bytelock, afp_closevol, afp_closedir,
     afp_closefork, afp_copyfile, afp_createdir, afp_createfile,        /*   0 -   7 */
     afp_delete, afp_enumerate, afp_flush, afp_flushfork,
@@ -203,20 +203,20 @@ int       (*postauth_switch[])() = {
 /* add a new function if it's specified. return the old function in
  * "old" if there's a pointer there. */
 int uam_afpserver_action(const int id, const int which,
-                         int (*new)(), int (**old)())
+                         AFPCmd new_table, AFPCmd *old)
 {
     switch (which) {
     case UAM_AFPSERVER_PREAUTH:
         if (old)
             *old = preauth_switch[id];
-        if (new)
-            preauth_switch[id] = new;
+        if (new_table)
+            preauth_switch[id] = new_table;
         break;
     case UAM_AFPSERVER_POSTAUTH:
         if (old)
             *old = postauth_switch[id];
-        if (new)
-            postauth_switch[id] = new;
+        if (new_table)
+            postauth_switch[id] = new_table;
         break;
     default:
         LOG(log_debug, logtype_afpd, "uam_afpserver_action: unknown switch %d[%d]",
index 3ca8d2a9942a83359b947cebfc61d57843126152..2f94ac8885d76dd18c5b3cf6d3d9d2040681fccb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: switch.h,v 1.3 2009-10-13 22:55:37 didg Exp $
+ * $Id: switch.h,v 1.4 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1991 Regents of The University of Michigan.
  * All Rights Reserved.
 #ifndef AFPD_SWITCH_H
 #define AFPD_SWITCH_H 1
 
-extern int     (**afp_switch)(AFPObj *, char *ibuf, int ilen, char *rbuf, int *rlen);
-extern int     (*postauth_switch[])();
+extern AFPCmd  *afp_switch;
+extern AFPCmd  postauth_switch[];
+
+/* switch.c */
+#define UAM_AFPSERVER_PREAUTH  (0)
+#define UAM_AFPSERVER_POSTAUTH (1 << 0)
+
+extern int uam_afpserver_action (const int /*id*/, const int /*switch*/, 
+                                    AFPCmd new_table, AFPCmd *old);
+
 
 #endif
index 026b0e0a0aaa72b162b557662dd8276ff1d1ecfa..47aabef8e9453c42d8f831e6332bf98a16d41e43 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: volume.c,v 1.93 2009-10-14 02:24:05 didg Exp $
+ * $Id: volume.c,v 1.94 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -1374,7 +1374,7 @@ static void vol_setdate(u_int16_t id, struct adouble *adp, time_t date)
 }
 
 /* ----------------------- */
-static int getvolparams( u_int16_t bitmap, struct vol *vol, struct stat *st, char *buf, int *buflen)
+static int getvolparams( u_int16_t bitmap, struct vol *vol, struct stat *st, char *buf, size_t *buflen)
 {
     struct adouble     ad;
     int                        bit = 0, isad = 1;
@@ -1577,10 +1577,11 @@ static int getvolparams( u_int16_t bitmap, struct vol *vol, struct stat *st, cha
 }
 
 /* ------------------------- */
-static int stat_vol(u_int16_t bitmap, struct vol *vol, char *rbuf, int *rbuflen)
+static int stat_vol(u_int16_t bitmap, struct vol *vol, char *rbuf, size_t *rbuflen)
 {
     struct stat        st;
-    int                buflen, ret;
+    int                ret;
+    size_t     buflen;
 
     if ( stat( vol->v_path, &st ) < 0 ) {
         *rbuflen = 0;
@@ -1671,7 +1672,7 @@ void load_volumes(AFPObj *obj)
 }
 
 /* ------------------------------- */
-int afp_getsrvrparms(AFPObj *obj, char *ibuf _U_, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_getsrvrparms(AFPObj *obj, char *ibuf _U_, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     struct timeval     tv;
     struct stat                st;
@@ -1749,7 +1750,7 @@ int afp_getsrvrparms(AFPObj *obj, char *ibuf _U_, int ibuflen _U_, char *rbuf, i
 /* ------------------------- 
  * we are the user here
 */
-int afp_openvol(AFPObj *obj, char *ibuf, int ibuflen _U_, char *rbuf, int *rbuflen)
+int afp_openvol(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
 {
     struct stat        st;
     char       *volname;
@@ -2062,7 +2063,7 @@ static void deletevol(struct vol *vol)
 }
 
 /* ------------------------- */
-int afp_closevol(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf _U_, int *rbuflen)
+int afp_closevol(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
 {
     struct vol *vol;
     u_int16_t  vid;
@@ -2193,7 +2194,7 @@ void setvoltime(AFPObj *obj, struct vol *vol)
 }
 
 /* ------------------------- */
-int afp_getvolparams(AFPObj *obj _U_, char *ibuf, int ibuflen _U_,char *rbuf, int *rbuflen)
+int afp_getvolparams(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_,char *rbuf, size_t *rbuflen)
 {
     struct vol *vol;
     u_int16_t  vid, bitmap;
@@ -2213,7 +2214,7 @@ int afp_getvolparams(AFPObj *obj _U_, char *ibuf, int ibuflen _U_,char *rbuf, in
 }
 
 /* ------------------------- */
-int afp_setvolparams(AFPObj *obj _U_, char *ibuf, int ibuflen _U_, char *rbuf _U_,  int *rbuflen)
+int afp_setvolparams(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf _U_,  size_t *rbuflen)
 {
     struct adouble ad;
     struct vol *vol;
index 1cb43993a65c395f35e0571ea03e0868490fd446..63d090036bf713f955df7eecac383c772d7cbc4d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: volume.h,v 1.35 2009-10-13 22:55:37 didg Exp $
+ * $Id: volume.h,v 1.36 2009-10-15 10:43:13 didg Exp $
  *
  * Copyright (c) 1990,1994 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -30,11 +30,11 @@ extern int              pollvoltime (AFPObj *);
 extern void             load_volumes (AFPObj *obj);
 
 /* FP functions */
-extern int     afp_openvol      (AFPObj *, char *, int, char *, int *);
-extern int     afp_getvolparams (AFPObj *, char *, int, char *, int *);
-extern int     afp_setvolparams (AFPObj *, char *, int, char *, int *);
-extern int     afp_getsrvrparms (AFPObj *, char *, int, char *, int *);
-extern int     afp_closevol     (AFPObj *, char *, int, char *, int *);
+int afp_openvol      (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_getvolparams (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_setvolparams (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_getsrvrparms (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
+int afp_closevol     (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,  size_t *rbuflen);
 
 /* netatalk functions */
 extern void     close_all_vol   (void);
index ffab8f01e375705173efdec62ac5369e9ecef984..f969a1c5d0f6007f15ea566f0fdf009618251bbe 100644 (file)
@@ -96,11 +96,4 @@ extern int uam_sia_validate_user (sia_collect_func_t *, int, char **,
                                      char *);
 #endif /* TRU64 */
 
-/* switch.c */
-#define UAM_AFPSERVER_PREAUTH  (0)
-#define UAM_AFPSERVER_POSTAUTH (1 << 0)
-
-extern int uam_afpserver_action (const int /*id*/, const int /*switch*/, 
-                                    int (*)(), int (**)());
-
 #endif