/*
- $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
/* 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;
* 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;
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;
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;
/*
- $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
} 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);
/*
- * $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.
*/
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;
/*
* 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;
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 ];
/*
- * $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.
}
-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;
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;
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 ];
/*
- * $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.
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 );
/* ---------------------- */
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;
/* ---------------------- */
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;
*rbuflen = 0;
tklen = 0;
+ if (ibuflen < 2 + sizeof(type)) {
+ return AFPERR_PARAM;
+ }
+
ibuf += 2;
ibuflen -= 2;
}
/* ---------------------- */
-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;
}
/* ---------------------- */
-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;
}
/* ---------------------- */
-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++;
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--;
}
/* ---------------------- */
-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;
if ( nologin & 1)
return send_reply(obj, AFPERR_SHUTDOWN );
- if (ibuflen <= 4)
+ if (ibuflen < 5)
return send_reply(obj, AFPERR_BADVERS );
ibuf++;
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--;
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;
}
/* ---------------------- */
-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 );
}
}
-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();
* 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;
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);
/* 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;
/*
- * $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.
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 */
{
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);
} /* 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;
} /* 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);
}
/*
- * $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.
*
#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;
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 );
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;
};
#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 ];
}
-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;
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) {
}
/* ----------------------------- */
-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;
}
/* -------------------- */
-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;
}
/* -------------------- */
-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;
}
/* ----------------------- */
-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;
/*
- * $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.
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
/*
- * $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.
}
/* ----------------------------- */
-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;
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;
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;
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;
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;
/* ------------------------------------
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;
/* 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;
/*
- * $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.
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
/*
- * $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.
#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;
}
/* ----------------------------- */
-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);
}
/*
- $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
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;
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;
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;
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;
/*
- $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
#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 */
/*
- * $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.
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;
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;
}
/* ----------------------------- */
-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;
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;
/* -----------------------------------
*/
-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;
/* ------------------------------------ */
/* 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;
/* ------------------------------
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;
}
/* ------------------------------ */
-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;
#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;
/*
- * $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.
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 *);
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 *);
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
/*
- * $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.
}
#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;
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;
}
/* -------------------------------------------- */
-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;
}
/* ------------------------------- */
-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;
}
/* ------------------------- */
-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;
/*
- * $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
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
/*
- * $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.
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;
}
/* ----------------------- */
-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;
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;
/* ---------------------- */
-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;
}
/* --------------------------- */
-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);
}
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;
*rbuflen = 0;
return( AFPERR_PARAM );
}
- if ( cc < *rbuflen ) {
+ if ( (size_t)cc < *rbuflen ) {
eof = 1;
}
*
* 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;
/* 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 */
}
/* ---------------------- */
-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;
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;
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;
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;
/* 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;
}
/* ---------------------------- */
-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);
}
/* ----------------------------
* 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;
/*
- * $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.
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
/*
- * $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.
};
#define AFPOBJ_TMPSIZ (MAXPATHLEN)
-typedef struct AFPObj {
+typedef struct _AFPObj {
int proto;
unsigned long servernum;
void *handle, *config;
#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;
/*
- * $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.
#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;
/*
- * $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 */
/*
- * $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.
}
/* 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;
/*
- * $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
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
/*
- * $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.
#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;
* 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,
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,
/* 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]",
/*
- * $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
/*
- * $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.
}
/* ----------------------- */
-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;
}
/* ------------------------- */
-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;
}
/* ------------------------------- */
-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;
/* -------------------------
* 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;
}
/* ------------------------- */
-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;
}
/* ------------------------- */
-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;
}
/* ------------------------- */
-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;
/*
- * $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.
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);
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