int creatf, did, openf;
u_int16_t vid;
+ syslog(LOG_INFO, "afp_createfile");
*rbuflen = 0;
ibuf++;
creatf = (unsigned char) *ibuf++;
syslog (LOG_ERR, "Error checking directory %s: %m", dir->d_name);
else {
uid=geteuid();
- strcpy (adpath, "./.AppleDouble/");
- strcat (adpath, path);
- seteuid(0); /* Become root to change the owner of the file */
- syslog (LOG_INFO, "Changing %s to uid=%d gid=%d", path, sb.st_uid, sb.st_gid);
- if (chown(path, sb.st_uid, -1)==-1)
- syslog (LOG_ERR, "Error changing permissions: %m");
- if (chown(adpath, sb.st_uid, -1)==-1)
- syslog (LOG_ERR, "Error changing AppleDouble permissions: %m");
- syslog (LOG_INFO, "Changing afpd owner back to %d", uid);
- seteuid(uid); /* Restore process ownership to normal */
+ if ( uid != sb.st_uid )
+ {
+ strcpy (adpath, "./.AppleDouble/");
+ strcat (adpath, path);
+ seteuid(0); /* Become root to change the owner of the file */
+ syslog (LOG_INFO, "Changing %s to uid=%d gid=%d", path, sb.st_uid, sb.st_gid);
+ if (chown(path, sb.st_uid, sb.st_gid)==-1)
+ syslog (LOG_ERR, "Error changing permissions: %m");
+ /* In order to write information to the file, the Mac client needs
+ to be able to read from it too, so read bits have to be turned on.
+ Directory permissions remain unchanged */
+ chmod(path,(sb.st_mode&0x0FFFF)| S_IRGRP| S_IROTH);
+ if (chown(adpath, sb.st_uid, sb.st_gid)==-1)
+ syslog (LOG_ERR, "Error changing AppleDouble permissions: %m");
+ syslog (LOG_INFO, "Changing afpd owner back to %d", uid);
+ seteuid(uid); /* Restore process ownership to normal */
+ }
}
#endif DROPKLUDGE
int did, rc;
u_int16_t vid, bitmap;
+ syslog (LOG_INFO, "afp_setfilparams");
*rbuflen = 0;
ibuf += 2;
int plen, err;
u_int16_t svid, dvid;
+ syslog(LOG_INFO, "afp_copyfile");
*rbuflen = 0;
ibuf += 2;
cnid_t did, id;
u_short vid;
-
+ syslog(LOG_INFO, "afp_createid");
*rbuflen = 0;
ibuf += 2;
cnid_t id;
u_int16_t vid, bitmap;
-
+ syslog(LOG_INFO, "afp_resolveid");
*rbuflen = 0;
ibuf += 2;
cnid_t id;
u_short vid;
-
+ syslog(LOG_INFO, "afp_deleteid");
*rbuflen = 0;
ibuf += 2;
cnid_t sid, did;
u_int16_t vid;
-
+ syslog(LOG_INFO, "afp_exchangefiles");
*rbuflen = 0;
ibuf += 2;