Permalink
Browse files

Fix error in ad_openat(), bug #532

Saving from Word to a folder that is a symlink to a folder on another filesystem
results in a crash of the afpd process and the save to fail. This happens only
if the option "follow symlinks" is enabled.
  • Loading branch information...
1 parent 418235a commit 79f0b2fd2a896fc700bdf50e75e0b4deaf126580 @slowfranklin slowfranklin committed Oct 8, 2013
Showing with 9 additions and 1 deletion.
  1. +4 −0 NEWS
  2. +5 −1 libatalk/adouble/ad_open.c
View
@@ -11,6 +11,10 @@ Changes in 3.0.6
* FIX: Small fix in the DSI tickle handling. Bug #528.
* UPD: Enhance handling of connection attempts when hitting the
connection limit. Bug #529.
+* FIX: Saving from Word to a folder that is a symlink to a folder on
+ another filesystem results in a crash of the afpd process and
+ the save to fail. This happens only if the option
+ "follow symlinks" is enabled. Bug #532.
Changes in 3.0.5
================
@@ -1897,17 +1897,21 @@ int ad_openat(struct adouble *ad,
mode_t mode = 0;
if (dirfd != -1) {
- if ((cwdfd = open(".", O_RDONLY) == -1) || (fchdir(dirfd) != 0))
+ if (((cwdfd = open(".", O_RDONLY)) == -1) || (fchdir(dirfd) != 0))
EC_FAIL;
}
+ LOG(log_note, logtype_ad, "ad_openat: cwdfd: %d", cwdfd);
+
va_start(args, adflags);
if (adflags & ADFLAGS_CREATE)
mode = (sizeof(mode_t) < sizeof(int) ? va_arg (args, int) : va_arg (args, mode_t));
va_end(args);
EC_NEG1( ad_open(ad, path, adflags, mode) );
+ LOG(log_note, logtype_ad, "ad_openat: cwdfd: %d", cwdfd);
+
if (dirfd != -1) {
if (fchdir(cwdfd) != 0) {
AFP_PANIC("ad_openat: cant chdir back");

0 comments on commit 79f0b2f

Please sign in to comment.