diff --git a/net/netatalk3/Makefile b/net/netatalk3/Makefile index b9392a94e855..1f2ac85e3b76 100644 --- a/net/netatalk3/Makefile +++ b/net/netatalk3/Makefile @@ -1,105 +1,105 @@ # Created by: stb PORTNAME= netatalk PORTVERSION= 3.1.13 -PORTREVISION= 1 +PORTREVISION= 2 PORTEPOCH= 1 CATEGORIES= net MASTER_SITES= SF PKGNAMESUFFIX= 3 MAINTAINER= marcus@FreeBSD.org COMMENT= File server for Mac OS X LICENSE= GPLv2 LIB_DEPENDS= libgcrypt.so:security/libgcrypt \ libevent.so:devel/libevent USES= bdb:5+ cpe gettext gmake iconv libtool perl5 pkgconfig shebangfix ssl tar:bzip2 GNU_CONFIGURE= yes USE_LDCONFIG= yes USE_RC_SUBR= netatalk INSTALL_TARGET=install-strip CPE_VENDOR= netatalk_project CONFIGURE_ARGS+= --with-pkgconfdir=${PREFIX}/etc \ --with-libgcrypt-dir=${LOCALBASE} \ --with-uams-path=${PREFIX}/libexec/netatalk-uams \ --with-bdb=${LOCALBASE} \ ${ICONV_CONFIGURE_BASE} \ --localstatedir=/var \ --disable-bundled-libevent \ --with-libevent-header=${LOCALBASE}/include \ --with-libevent-lib=${LOCALBASE}/lib \ --with-ssl-dir=${OPENSSLBASE} \ --without-dtrace OPTIONS_DEFINE=PAM KERBEROS5 LDAP SENDFILE KERBEROS DBUS MYSQL ACL LIBWRAP OPTIONS_DEFAULT=AVAHI DBUS KERBEROS LIBWRAP OPTIONS_RADIO=ZEROCONF OPTIONS_RADIO_ZEROCONF=AVAHI MDNSRESPONDER ZEROCONF_DESC= Zeroconf(Bonjour) support MYSQL_DESC= Enable MySQL CNID backend support SENDFILE_DESC= Enable Sendfile support ACL_DESC= Enable ACL support OPTIONS_SUB= yes KERBEROS5_CONFIGURE_ON= --enable-krbV-uam KERBEROS_CONFIGURE_WITH=kerberos KERBEROS_LIB_DEPENDS=libgpg-error.so:security/libgpg-error PAM_CONFIGURE_WITH=pam AVAHI_CONFIGURE_ON= --enable-zeroconf=${LOCALBASE} AVAHI_CFLAGS= -I${LOCALBASE}/include -L${LOCALBASE}/lib AVAHI_LIB_DEPENDS= libavahi-client.so:net/avahi-app AVAHI_SUB_LIST= ZEROCONF="avahi_daemon" MDNSRESPONDER_CONFIGURE_ON= --enable-zeroconf=${LOCALBASE} MDNSRESPONDER_CONFIGURE_ENV= ac_cv_lib_avahi_client_avahi_client_new=no MDNSRESPONDER_CFLAGS= -I${LOCALBASE}/include -L${LOCALBASE}/lib MDNSRESPONDER_LIB_DEPENDS= libdns_sd.so:net/mDNSResponder MDNSRESPONDER_SUB_LIST= ZEROCONF="mdnsd" LDAP_CONFIGURE_ON= --with-ldap=${LOCALBASE} LDAP_CFLAGS= -I${LOCALBASE}/include -L${LOCALBASE}/lib LDAP_USE= OPENLDAP=yes LDAP_CONFIGURE_OFF= --without-ldap SENDFILE_CONFIGURE_ENABLE=sendfile DBUS_USES= gnome python DBUS_USE= GNOME=glib20 DBUS_LIB_DEPENDS= libdbus-glib-1.so:devel/dbus-glib \ libdbus-1.so:devel/dbus DBUS_RUN_DEPENDS= ${PYTHON_SITELIBDIR}/dbus/_dbus.py:devel/py-dbus@${PY_FLAVOR} MYSQL_USES= mysql MYSQL_CONFIGURE_OFF=--with-mysql-config=/nonexistent ACL_LIB_DEPENDS= libsunacl.so:sysutils/libsunacl ACL_CONFIGURE_WITH=acls LIBWRAP_CONFIGURE_ENABLE=tcp-wrappers SHEBANG_GLOB= afpstats CONFLICTS= jday yudit # bin/dbd man/man1/uniconv.1.gz .include .if ${PORT_OPTIONS:MAVAHI}=="" && ${PORT_OPTIONS:MMDNSRESPONDER}=="" SUB_LIST+= ZEROCONF="" CONFIGURE_ARGS+=--disable-zeroconf .endif post-patch: @${REINPLACE_CMD} -e 's|%%DB_NAME%%|${BDB_INCLUDE_DIR:T}| ; \ s|%%DB_LIB%%|-l${BDB_LIB_NAME}|g ; \ s|%%LOCALBASE%%|${LOCALBASE}|g' \ ${WRKSRC}/configure @${REINPLACE_CMD} -e 's|\.dist|\.sample|g' \ ${WRKSRC}/config/Makefile.in # @${REINPLACE_CMD} -e 's|%%PYTHONCMD%%|${PYTHONCMD}|' \ # ${WRKSRC}/contrib/shell_utils/afpstats post-install: ${INSTALL_SCRIPT} ${WRKSRC}/contrib/macusers/macusers \ ${STAGEDIR}${PREFIX}/bin/macusers .if ${PORT_OPTIONS:MPAM} ${INSTALL_DATA} ${FILESDIR}/pam.conf ${STAGEDIR}${PREFIX}/etc/pam.d/netatalk.sample .endif .include diff --git a/net/netatalk3/files/patch-libatalk_adouble_ad__open.c b/net/netatalk3/files/patch-libatalk_adouble_ad__open.c index 086594859f40..9a704469a6de 100644 --- a/net/netatalk3/files/patch-libatalk_adouble_ad__open.c +++ b/net/netatalk3/files/patch-libatalk_adouble_ad__open.c @@ -1,13 +1,84 @@ ---- libatalk/adouble/ad_open.c.orig 2022-05-01 19:20:45 UTC +--- libatalk/adouble/ad_open.c.orig 2022-03-22 04:44:25 UTC +++ libatalk/adouble/ad_open.c -@@ -1637,6 +1637,10 @@ void *ad_entry(const struct adouble *ad, int eid) +@@ -1574,6 +1574,8 @@ static bool ad_entry_check_size(uint32_t eid, + uint32_t required_len; + + if (eid >= ADEID_MAX) { ++ LOG(log_error, logtype_ad, "ad_entry_check_size %d is greater than %d", ++ eid, ADEID_MAX); + return false; + } + if (got_len == 0) { +@@ -1585,6 +1587,7 @@ static bool ad_entry_check_size(uint32_t eid, + * Shouldn't happen: implicitly initialized to zero because + * explicit initializer missing. + */ ++ LOG(log_error, logtype_ad, "ad_entry_check_size explicit initializer missing"); + return false; + } + if (ad_checks[eid].expected_len == -1) { +@@ -1594,6 +1597,8 @@ static bool ad_entry_check_size(uint32_t eid, + if (ad_checks[eid].fixed_size) { + if (ad_checks[eid].expected_len != got_len) { + /* Wrong size fo fixed size entry. */ ++ LOG(log_error, logtype_ad, "ad_entry_check_size wrong size to fixed size entry (%d != %d)", ++ ad_checks[eid].expected_len, got_len); + return false; + } + required_len = got_len; +@@ -1604,12 +1609,16 @@ static bool ad_entry_check_size(uint32_t eid, + * Too small for variable sized entry with + * minimum size. + */ ++ LOG(log_error, logtype_ad, "ad_entry_check_size too small for variable sized entry (%d < %d)", ++ got_len, ad_checks[eid].expected_len); + return false; + } + required_len = got_len; + } else { + if (got_len > ad_checks[eid].expected_len) { + /* Too big for variable sized entry. */ ++ LOG(log_error, logtype_ad, "ad_entry_check_size too big for variable sized entry (%d > %d)", ++ got_len, ad_checks[eid].expected_len); + return false; + } + /* +@@ -1621,10 +1630,14 @@ static bool ad_entry_check_size(uint32_t eid, + } + if (off + required_len < off) { + /* wrap around */ ++ LOG(log_error, logtype_ad, "ad_entry_check_size wrap around (%d + %d < %d)", ++ off, required_len, off); + return false; + } + if (off + required_len > bufsize) { + /* overflow */ ++ LOG(log_error, logtype_ad, "ad_entry_check_size overflow (%d + %d > %d)", ++ off, required_len, bufsize); + return false; + } + return true; +@@ -1637,14 +1650,21 @@ void *ad_entry(const struct adouble *ad, int eid) size_t len = ad_getentrylen(ad, eid); bool valid; + if (bufsize == 0) { + bufsize = sizeof(ad->ad_data) - (off + len); + } + valid = ad_entry_check_size(eid, bufsize, off, len); if (!valid) { ++ LOG(log_error, logtype_ad, "ad_entry: not valid"); + return NULL; + } + +- if (off == 0 || len == 0) { ++ /*if (off == 0 || len == 0) { ++ LOG(log_error, logtype_ad, "ad_entry: off or len is 0 (off: %d, len: %d)", ++ off, len); return NULL; +- } ++ }*/ + + return ((struct adouble *)ad)->ad_data + off; + }