ports/170644: [PATCH] irc/inspircd: update to 2.0.8
Mark Felder
feld at feld.me
Wed Aug 15 05:30:11 UTC 2012
>Number: 170644
>Category: ports
>Synopsis: [PATCH] irc/inspircd: update to 2.0.8
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: maintainer-update
>Submitter-Id: current-users
>Arrival-Date: Wed Aug 15 05:30:10 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator: feld
>Release: FreeBSD 9.0-STABLE amd64
>Organization:
>Environment:
System: FreeBSD mwi1.coffeenet.org 9.0-STABLE FreeBSD 9.0-STABLE #3 r234963: Thu May 3 13:12:01
>Description:
- Update to 2.0.8
- Made the knobs actually work
- Added regex modules as new knobs
- Added ldapoper module knob
- regex_posix and sqlite enabled by default (following upstream)
Added file(s):
- files/patch-make_template_main.mk
Removed file(s):
- files/patch-src_dns.cpp
https://redports.org/buildarchive/20120815052212-46196/
Generated with FreeBSD Port Tools 0.99_6 (mode: update, diff: suffix)
>How-To-Repeat:
>Fix:
--- inspircd-2.0.8.patch begins here ---
diff -ruN --exclude=CVS ../inspircd.orig/Makefile ./Makefile
--- ../inspircd.orig/Makefile 2012-06-14 14:28:02.000000000 -0500
+++ ./Makefile 2012-08-15 00:21:05.821274446 -0500
@@ -6,8 +6,7 @@
#
PORTNAME= inspircd
-PORTVERSION= 2.0.5
-PORTREVISION= 2
+PORTVERSION= 2.0.8
CATEGORIES= irc
MASTER_SITES= http://cloud.github.com/downloads/inspircd/inspircd/
DISTNAME= InspIRCd-${PORTVERSION}
@@ -36,34 +35,44 @@
HAS_CONFIGURE= yes
CONFIGURE_ARGS= --with-cc=${CXX} --config-dir=${ETCDIR} \
- --module-dir=${PREFIX}/lib/${PORTNAME}/modules \
- --library-dir=${PREFIX}/lib/${PORTNAME} \
+ --module-dir=${PREFIX}/lib/${PORTNAME}/modules \
--prefix=${PREFIX}/lib/${PORTNAME} --binary-dir=${PREFIX}/bin \
- --enable-kqueue --enable-ipv6 --disable-interactive \
+ --enable-kqueue --disable-interactive \
--uid=${INSPIRCD_UID}
-
PORTDOCS= docs/* extras/*
-OPTIONS_DEFINE= MYSQL PGSQL SQLITE LDAP GNUTLS OPENSSL
+OPTIONS_DEFINE= MYSQL PGSQL SQLITE LDAPAUTH LDAPOPER GNUTLS OPENSSL PCRE POSIX
+OPTIONS_DEFAULT= POSIX SQLITE
GNUTLS_DESC= Build m_ssl_gnutls module
-LDAP_DESC= Build m_ldapauth module
+LDAPAUTH_DESC= Build m_ldapauth module
+LDAPOPER_DESC= Build m_ldapoper module
MYSQL_DESC= Build m_mysql module
OPENSSL_DESC= Build m_ssl_openssl module
PGSQL_DESC= Build m_pgsql module
SQLITE_DESC= Build m_sqlite3 module
+PCRE_DESC= Build m_regex_pcre module
+POSIX_DESC= Build m_regex_posix module
.include <bsd.port.options.mk>
post-extract:
@(cd ${WRKDIR} && ${MV} ${PORTNAME} ${DISTNAME})
-.if ${PORT_OPTIONS:MLDAP}
+.if ${PORT_OPTIONS:MLDAPAUTH}
USE_OPENLDAP= yes
EXTRAS:=${EXTRAS},m_ldapauth.cpp
-PLIST_SUB+= LDAP=""
+PLIST_SUB+= LDAPAUTH=""
+.else
+PLIST_SUB+= LDAPAUTH="@comment "
+.endif
+
+.if ${PORT_OPTIONS:MLDAPOPER}
+USE_OPENLDAP= yes
+EXTRAS:=${EXTRAS},m_ldapoper.cpp
+PLIST_SUB+= LDAPOPER=""
.else
-PLIST_SUB+= LDAP="@comment "
+PLIST_SUB+= LDAPOPER="@comment "
.endif
.if ${PORT_OPTIONS:MMYSQL}
@@ -94,6 +103,7 @@
LIB_DEPENDS+= gnutls.47:${PORTSDIR}/security/gnutls \
gcrypt.18:${PORTSDIR}/security/libgcrypt
CONFIGURE_ARGS+= --enable-gnutls
+EXTRAS:=${EXTRAS},m_ssl_gnutls.cpp
PLIST_SUB+= GNUTLS=""
.else
PLIST_SUB+= GNUTLS="@comment "
@@ -102,12 +112,31 @@
.if ${PORT_OPTIONS:MOPENSSL}
USE_OPENSSL=yes
CONFIGURE_ARGS+= --enable-openssl
+EXTRAS:=${EXTRAS},m_ssl_openssl.cpp
PLIST_SUB+= OPENSSL=""
.else
PLIST_SUB+= OPENSSL="@comment "
.endif
-CONFIGURE_ARGS+= --enable-extras=${EXTRAS}
+.if ${PORT_OPTIONS:MPCRE}
+LIB_DEPENDS+= pcre:${PORTSDIR}/devel/pcre
+EXTRAS:=${EXTRAS},m_regex_pcre.cpp
+PLIST_SUB+= PCRE=""
+.else
+PLIST_SUB+= PCRE="@comment "
+.endif
+
+.if ${PORT_OPTIONS:MPOSIX}
+EXTRAS:=${EXTRAS},m_regex_posix.cpp
+PLIST_SUB+= POSIX=""
+.else
+PLIST_SUB+= POSIX="@comment "
+.endif
+
+pre-configure:
+ @if [ ${EXTRAS} ]; then \
+ cd ${WRKSRC} && ./${CONFIGURE_SCRIPT} --enable-extras=${EXTRAS} ; \
+ fi
post-install:
@${STRIP_CMD} ${PREFIX}/lib/${PORTNAME}/modules/*.so
diff -ruN --exclude=CVS ../inspircd.orig/distinfo ./distinfo
--- ../inspircd.orig/distinfo 2012-05-15 21:45:17.000000000 -0500
+++ ./distinfo 2012-08-14 17:04:27.000000000 -0500
@@ -1,2 +1,2 @@
-SHA256 (InspIRCd-2.0.5.tar.bz2) = 425bf79ae1348b398ce6d2348f6cc8baeebe8125f62337e98c136942223f4fc6
-SIZE (InspIRCd-2.0.5.tar.bz2) = 575852
+SHA256 (InspIRCd-2.0.8.tar.bz2) = 5fd57df1a2a10f480aefc61272f22fdd8addb5ab3a544582235377b8fa8b9296
+SIZE (InspIRCd-2.0.8.tar.bz2) = 591761
diff -ruN --exclude=CVS ../inspircd.orig/files/patch-make_template_main.mk ./files/patch-make_template_main.mk
--- ../inspircd.orig/files/patch-make_template_main.mk 1969-12-31 18:00:00.000000000 -0600
+++ ./files/patch-make_template_main.mk 2012-08-14 23:58:15.000000000 -0500
@@ -0,0 +1,22 @@
+--- make/template/main.mk.orig 2012-07-13 10:38:01.000000000 -0500
++++ make/template/main.mk 2012-08-14 23:58:06.816315279 -0500
+@@ -58,6 +58,10 @@
+ @IFEQ $(SYSTEM) linux
+ LDLIBS += -ldl -lrt
+ @ENDIF
++ at IFEQ $(SYSTEM) freebsd
++ CXXFLAGS += -I/usr/local/include
++ LDFLAGS += -L/usr/local/lib
++ at ENDIF
+ @IFEQ $(SYSTEM) gnukfreebsd
+ LDLIBS += -ldl -lrt
+ @ENDIF
+@@ -124,7 +128,7 @@
+ CXXFLAGS += -DPURE_STATIC
+ @ENDIF
+
+- at DO_EXPORT RUNCC RUNLD CXXFLAGS LDLIBS PICLDFLAGS VERBOSE SOCKETENGINE CORELDFLAGS
++ at DO_EXPORT RUNCC RUNLD CXXFLAGS LDLIBS PICLDFLAGS VERBOSE SOCKETENGINE CORELDFLAGS LDFLAGS
+ @DO_EXPORT SOURCEPATH BUILDPATH PURE_STATIC SPLIT_CC
+
+ # Default target
diff -ruN --exclude=CVS ../inspircd.orig/files/patch-src_dns.cpp ./files/patch-src_dns.cpp
--- ../inspircd.orig/files/patch-src_dns.cpp 2012-05-16 08:29:59.000000000 -0500
+++ ./files/patch-src_dns.cpp 1969-12-31 18:00:00.000000000 -0600
@@ -1,135 +0,0 @@
---- src/dns.cpp.orig 2012-05-15 21:45:31.840274636 -0500
-+++ src/dns.cpp 2012-05-15 21:45:58.653278686 -0500
-@@ -38,6 +49,8 @@
- #include "configreader.h"
- #include "socket.h"
-
-+#define DN_COMP_BITMASK 0xC000 /* highest 6 bits in a DN label header */
-+
- /** Masks to mask off the responses we get from the DNSRequest methods
- */
- enum QueryInfo
-@@ -98,7 +111,7 @@
-
- DNSRequest(DNS* dns, int id, const std::string &original);
- ~DNSRequest();
-- DNSInfo ResultIsReady(DNSHeader &h, int length);
-+ DNSInfo ResultIsReady(DNSHeader &h, unsigned length);
- int SendRequests(const DNSHeader *header, const int length, QueryType qt);
- };
-
-@@ -161,7 +174,10 @@
- /* Allocate the processing buffer */
- DNSRequest::DNSRequest(DNS* dns, int rid, const std::string &original) : dnsobj(dns)
- {
-- res = new unsigned char[512];
-+ /* hardening against overflow here: make our work buffer twice the theoretical
-+ * maximum size so that hostile input doesn't screw us over.
-+ */
-+ res = new unsigned char[sizeof(DNSHeader) * 2];
- *res = 0;
- orig = original;
- RequestTimeout* RT = new RequestTimeout(ServerInstance->Config->dns_timeout ? ServerInstance->Config->dns_timeout : 5, this, rid);
-@@ -688,11 +704,11 @@
- }
-
- /** A result is ready, process it */
--DNSInfo DNSRequest::ResultIsReady(DNSHeader &header, int length)
-+DNSInfo DNSRequest::ResultIsReady(DNSHeader &header, unsigned length)
- {
-- int i = 0;
-+ unsigned i = 0, o;
- int q = 0;
-- int curanswer, o;
-+ int curanswer;
- ResourceRecord rr;
- unsigned short ptr;
-
-@@ -755,7 +771,7 @@
- else i += header.payload[i] + 1; /* skip length and label */
- }
- }
-- if (length - i < 10)
-+ if (static_cast<int>(length - i) < 10)
- return std::make_pair((unsigned char*)NULL,"Incorrectly sized DNS reply");
-
- /* XXX: We actually initialise 'rr' here including its ttl field */
-@@ -790,17 +806,37 @@
-
- switch (rr.type)
- {
-+ /*
-+ * CNAME and PTR are compressed. We need to decompress them.
-+ */
- case DNS_QUERY_CNAME:
-- /* CNAME and PTR have the same processing code */
- case DNS_QUERY_PTR:
-+ {
-+ unsigned short lowest_pos = length;
- o = 0;
- q = 0;
- while (q == 0 && i < length && o + 256 < 1023)
- {
-+ /* DN label found (byte over 63) */
- if (header.payload[i] > 63)
- {
- memcpy(&ptr,&header.payload[i],2);
-- i = ntohs(ptr) - 0xC000 - 12;
-+
-+ i = ntohs(ptr);
-+
-+ /* check that highest two bits are set. if not, we've been had */
-+ if ((i & DN_COMP_BITMASK) != DN_COMP_BITMASK)
-+ return std::make_pair((unsigned char *) NULL, "DN label decompression header is bogus");
-+
-+ /* mask away the two highest bits. */
-+ i &= ~DN_COMP_BITMASK;
-+
-+ /* and decrease length by 12 bytes. */
-+ i -= 12;
-+
-+ if (i >= lowest_pos)
-+ return std::make_pair((unsigned char *) NULL, "Invalid decompression pointer");
-+ lowest_pos = i;
- }
- else
- {
-@@ -813,25 +849,35 @@
- res[o] = 0;
- if (o != 0)
- res[o++] = '.';
-- memcpy(&res[o],&header.payload[i + 1],header.payload[i]);
-+
-+ if (o + header.payload[i] > sizeof(DNSHeader))
-+ return std::make_pair((unsigned char *) NULL, "DN label decompression is impossible -- malformed/hostile packet?");
-+
-+ memcpy(&res[o], &header.payload[i + 1], header.payload[i]);
- o += header.payload[i];
- i += header.payload[i] + 1;
- }
- }
- }
- res[o] = 0;
-+ }
- break;
- case DNS_QUERY_AAAA:
-+ if (rr.rdlength != sizeof(struct in6_addr))
-+ return std::make_pair((unsigned char *) NULL, "rr.rdlength is larger than 16 bytes for an ipv6 entry -- malformed/hostile packet?");
-+
- memcpy(res,&header.payload[i],rr.rdlength);
- res[rr.rdlength] = 0;
- break;
- case DNS_QUERY_A:
-+ if (rr.rdlength != sizeof(struct in_addr))
-+ return std::make_pair((unsigned char *) NULL, "rr.rdlength is larger than 4 bytes for an ipv4 entry -- malformed/hostile packet?");
-+
- memcpy(res,&header.payload[i],rr.rdlength);
- res[rr.rdlength] = 0;
- break;
- default:
-- memcpy(res,&header.payload[i],rr.rdlength);
-- res[rr.rdlength] = 0;
-+ return std::make_pair((unsigned char *) NULL, "don't know how to handle undefined type (" + ConvToStr(rr.type) + ") -- rejecting");
- break;
- }
- return std::make_pair(res,"No error");
diff -ruN --exclude=CVS ../inspircd.orig/pkg-plist ./pkg-plist
--- ../inspircd.orig/pkg-plist 2012-06-14 14:28:02.000000000 -0500
+++ ./pkg-plist 2012-08-15 00:06:28.000000000 -0500
@@ -182,12 +182,15 @@
lib/inspircd/modules/m_spanningtree.so
lib/inspircd/modules/m_sqlauth.so
lib/inspircd/modules/m_sqloper.so
-%%LDAP%%lib/inspircd/modules/m_ldapauth.so
+%%LDAPAUTH%%lib/inspircd/modules/m_ldapauth.so
+%%LDAPOPER%%lib/inspircd/modules/m_ldapoper.so
%%MYSQL%%lib/inspircd/modules/m_mysql.so
%%PGSQL%%lib/inspircd/modules/m_pgsql.so
%%SQLITE%%lib/inspircd/modules/m_sqlite3.so
%%GNUTLS%%lib/inspircd/modules/m_ssl_gnutls.so
%%OPENSSL%%lib/inspircd/modules/m_ssl_openssl.so
+%%PCRE%%lib/inspircd/modules/m_regex_pcre.so
+%%POSIX%%lib/inspircd/modules/m_regex_posix.so
lib/inspircd/modules/m_sslinfo.so
lib/inspircd/modules/m_sslmodes.so
lib/inspircd/modules/m_stripcolor.so
--- inspircd-2.0.8.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list