X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=etc%2Fafpd%2Fappl.c;h=f53803e0dfc5f92ebcb5188ede9a146d2922a7b9;hb=4021b76ce3f3e51756e9d59b4a5a045ad6398dc8;hp=d7e72f2395a5e78c9821d83160342eb11fde090b;hpb=8cfcbaea66c691c147a334b39e9f8b4561f34343;p=netatalk.git diff --git a/etc/afpd/appl.c b/etc/afpd/appl.c index d7e72f23..f53803e0 100644 --- a/etc/afpd/appl.c +++ b/etc/afpd/appl.c @@ -1,5 +1,4 @@ /* - * $Id: appl.c,v 1.18.4.1 2010-02-01 10:56:08 franklahm Exp $ * * Copyright (c) 1990,1993 Regents of The University of Michigan. * All Rights Reserved. See COPYRIGHT. @@ -22,9 +21,10 @@ #include #include #include +#include +#include #include "volume.h" -#include "globals.h" #include "directory.h" #include "file.h" #include "desktop.h" @@ -87,8 +87,8 @@ static int copyapplfile(int sfd, int dfd, char *mpath, u_short mplen) { int cc; char *p; - u_int16_t len; - u_char appltag[ 4 ]; + uint16_t len; + unsigned char appltag[ 4 ]; char buf[ MAXPATHLEN ]; while (( cc = read( sfd, buf, sizeof(appltag) + sizeof( u_short ))) > 0 ) { @@ -138,7 +138,7 @@ makemacpath(const struct vol *vol, char *mpath, int mpathlen, struct dir *dir, c /* FIXME: pathname too long */ return NULL; } - memcpy(p, cfrombstring(dir->d_m_name), blength(dir->d_m_name) + 1); + memcpy(p, cfrombstr(dir->d_m_name), blength(dir->d_m_name) + 1); if ((dir = dirlookup(vol, dir->d_pdid)) == NULL) return NULL; } @@ -170,7 +170,11 @@ makemacpath(const struct vol *vol, char *mpath, int mpathlen, struct dir *dir, c } /* next part */ - if ((uname = cnid_resolve(vol->v_cdb, &cnid, buffer, buflen)) == NULL ) { + AFP_CNID_START("cnid_resolve"); + uname = cnid_resolve(vol->v_cdb, &cnid, buffer, buflen); + AFP_CNID_DONE(); + + if (uname == NULL) { afp_errno = AFPERR_NOOBJ; ret = NULL; goto exit; @@ -199,12 +203,12 @@ int afp_addappl(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, siz struct vol *vol; struct dir *dir; int tfd, cc; - u_int32_t did; - u_int16_t vid, mplen; + uint32_t did; + uint16_t vid, mplen; struct path *path; char *dtf, *p, *mp; - u_char creator[ 4 ]; - u_char appltag[ 4 ]; + unsigned char creator[ 4 ]; + unsigned char appltag[ 4 ]; char *mpath, *tempfile; *rbuflen = 0; @@ -250,6 +254,7 @@ int afp_addappl(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, siz mpath = obj->newtmp; mp = makemacpath( vol, mpath, AFPOBJ_TMPSIZ, curdir, path->m_name ); if (!mp) { + close(tfd); return AFPERR_PARAM; } mplen = mpath + AFPOBJ_TMPSIZ - mp; @@ -263,6 +268,7 @@ int afp_addappl(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, siz memcpy(p, appltag, sizeof( appltag )); cc = mpath + AFPOBJ_TMPSIZ - p; if ( write( tfd, p, cc ) != cc ) { + close(tfd); unlink( tempfile ); return( AFPERR_PARAM ); } @@ -286,11 +292,11 @@ int afp_rmvappl(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, siz struct vol *vol; struct dir *dir; int tfd, cc; - u_int32_t did; - u_int16_t vid, mplen; + uint32_t did; + uint16_t vid, mplen; struct path *path; char *dtf, *mp; - u_char creator[ 4 ]; + unsigned char creator[ 4 ]; char *tempfile, *mpath; *rbuflen = 0; @@ -333,6 +339,7 @@ int afp_rmvappl(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, siz mpath = obj->newtmp; mp = makemacpath( vol, mpath, AFPOBJ_TMPSIZ, curdir, path->m_name ); if (!mp) { + close(tfd); return AFPERR_PARAM ; } @@ -358,9 +365,9 @@ int afp_getappl(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t char *p, *q; int cc; size_t buflen; - u_int16_t vid, aindex, bitmap, len; - u_char creator[ 4 ]; - u_char appltag[ 4 ]; + uint16_t vid, aindex, bitmap, len; + unsigned char creator[ 4 ]; + unsigned char appltag[ 4 ]; char *buf, *cbuf; struct path *path; @@ -479,8 +486,8 @@ int afp_getappl(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t return( AFPERR_NOITEM ); } buflen = *rbuflen - sizeof( bitmap ) - sizeof( appltag ); - if ( getfilparams(vol, bitmap, path, curdir, rbuf + sizeof( bitmap ) + - sizeof( appltag ), &buflen ) != AFP_OK ) { + if ( getfilparams(obj, vol, bitmap, path, curdir, rbuf + sizeof( bitmap ) + + sizeof( appltag ), &buflen, 0) != AFP_OK ) { *rbuflen = 0; return( AFPERR_BITMAP ); }