Package: netatalk Version: 2.1.4-1 Severity: important Tags: patch upstream
This happens with netatalk on sid and squeeze at least. There is a patch from upstream at: <http://sourceforge.net/tracker/index.php?func=detail&aid=3110004&group_id=8642&atid=108642> After applying the patch to 2.1.4-1 source, things work as they should. -- System Information: Debian Release: squeeze/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing') Architecture: sparc (sparc64) Kernel: Linux 2.6.33 Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1) Shell: /bin/sh linked to /bin/bash Versions of packages netatalk depends on: ii libc6 2.11.2-7 Embedded GNU C Library: Shared lib ii libcomerr2 1.41.12-2 common error description library ii libcrack2 2.8.16-4 pro-active password checker librar ii libcups2 1.4.4-7 Common UNIX Printing System(tm) - ii libdb4.8 4.8.30-2 Berkeley v4.8 Database Libraries [ ii libgcrypt11 1.4.5-2 LGPL Crypto library - runtime libr ii libgnutls26 2.8.6-1 the GNU TLS library - runtime libr ii libgssapi-krb5-2 1.8.3+dfsg-2 MIT Kerberos runtime libraries - k ii libk5crypto3 1.8.3+dfsg-2 MIT Kerberos runtime libraries - C ii libkrb5-3 1.8.3+dfsg-2 MIT Kerberos runtime libraries ii libpam-modules 1.1.1-6.1 Pluggable Authentication Modules f ii libpam0g 1.1.1-6.1 Pluggable Authentication Modules l ii libwrap0 7.6.q-19 Wietse Venema's TCP wrappers libra ii netbase 4.43 Basic TCP/IP networking system ii perl 5.10.1-16 Larry Wall's Practical Extraction ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime Versions of packages netatalk recommends: ii cracklib-runtime 2.8.16-4 runtime support for password check ii db4.8-util 4.8.30-2 Berkeley v4.8 Database Utilities pn libpam-cracklib <none> (no description available) ii lsof 4.81.dfsg.1-1+b1 List open files ii procps 1:3.2.8-9 /proc file system utilities pn rc <none> (no description available) Versions of packages netatalk suggests: ii db4.2-util 4.2.52+dfsg-5 Berkeley v4.2 Database Utilities pn db4.7-util <none> (no description available) pn groff <none> (no description available) pn quota <none> (no description available) pn texlive-base-bin <none> (no description available) -- Configuration Files: /etc/default/netatalk changed: AFPD_MAX_CLIENTS=4 ATALK_NAME=zervio ATALK_MAC_CHARSET='MAC_ROMAN' ATALK_UNIX_CHARSET='LOCALE' AFPD_UAMLIST="-U uams_dhx.so,uams_dhx2.so" AFPD_GUEST=nobody ATALKD_RUN=no PAPD_RUN=no TIMELORD_RUN=no A2BOOT_RUN=no CNID_METAD_RUN=yes AFPD_RUN=yes ATALK_BGROUND=no export ATALK_MAC_CHARSET export ATALK_UNIX_CHARSET /etc/netatalk/AppleVolumes.default changed: :DEFAULT: options:upriv,usedots ~/ "$u" cnidscheme:dbd /home/alfredo/TimeMachine "TimeMachine" allow:alfredo options:tm /home/alicia/TimeMachine "Time Machine" allow:alicia options:tm /etc/netatalk/afpd.conf changed: - -tcp -uamlist uams_dhx2_pam.so -nosavepassword -advertise_ssh -timeout 1 -- no debconf information
diff --git a/libatalk/adouble/ad_attr.c b/libatalk/adouble/ad_attr.c index ce1e1fa..8b3a320 100644 --- a/libatalk/adouble/ad_attr.c +++ b/libatalk/adouble/ad_attr.c @@ -60,7 +60,7 @@ int ad_getattr(const struct adouble *ad, u_int16_t *attr) /* ----------------- */ int ad_setattr(const struct adouble *ad, const u_int16_t attribute) { - u_int16_t *fflags; + uint16_t fflags; /* we don't save open forks indicator */ u_int16_t attr = attribute & ~htons(ATTRBIT_DOPEN | ATTRBIT_ROPEN); @@ -78,22 +78,24 @@ int ad_setattr(const struct adouble *ad, const u_int16_t attribute) } #if AD_VERSION == AD_VERSION2 else if (ad->ad_version == AD_VERSION2) { - if (ad_getentryoff(ad, ADEID_AFPFILEI)) { + if (ad_getentryoff(ad, ADEID_AFPFILEI) && ad_getentryoff(ad, ADEID_FINDERI)) { memcpy(ad_entry(ad, ADEID_AFPFILEI) + AFPFILEIOFF_ATTR, &attr, sizeof(attr)); /* Now set opaque flags in FinderInfo too */ - fflags = (u_int16_t *)ad_entry(ad, ADEID_FINDERI) + FINDERINFO_FRFLAGOFF; + memcpy(&fflags, ad_entry(ad, ADEID_FINDERI) + FINDERINFO_FRFLAGOFF, 2); if (attr & htons(ATTRBIT_INVISIBLE)) - *fflags |= htons(FINDERINFO_INVISIBLE); + fflags |= htons(FINDERINFO_INVISIBLE); else - *fflags &= htons(~FINDERINFO_INVISIBLE); + fflags &= htons(~FINDERINFO_INVISIBLE); /* See above comment in ad_getattr() */ if (attr & htons(ATTRBIT_MULTIUSER)) { if ( ! (ad->ad_adflags & ADFLAGS_DIR) ) - *fflags |= htons(FINDERINFO_ISHARED); + fflags |= htons(FINDERINFO_ISHARED); } else - *fflags &= htons(~FINDERINFO_ISHARED); + fflags &= htons(~FINDERINFO_ISHARED); + + memcpy(ad_entry(ad, ADEID_FINDERI) + FINDERINFO_FRFLAGOFF, &fflags, 2); } } #endif