summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2005-04-19 00:04:33 +0000
committerMike Frysinger <vapier@gentoo.org>2005-04-19 00:04:33 +0000
commite452d4ba75478ddcbf8b42af2725f4e14237cdb1 (patch)
tree483e70912f3da2539d10fb16c288f8f874389980 /net-misc/whois
parentPruned old ebuilds, fixed dependency on libmpeg2-0.3* for vlc-0.6.2 (fixes #6... (diff)
downloadgentoo-2-e452d4ba75478ddcbf8b42af2725f4e14237cdb1.tar.gz
gentoo-2-e452d4ba75478ddcbf8b42af2725f4e14237cdb1.tar.bz2
gentoo-2-e452d4ba75478ddcbf8b42af2725f4e14237cdb1.zip
Version bump #73845 by Daniel Webert and add /etc/whois.conf support #89417 by Wakko Warner.
(Portage version: 2.0.51.19)
Diffstat (limited to 'net-misc/whois')
-rw-r--r--net-misc/whois/ChangeLog12
-rw-r--r--net-misc/whois/files/digest-whois-4.7.21
-rw-r--r--net-misc/whois/files/whois-4.7.2-config-file.patch12
-rw-r--r--net-misc/whois/files/whois-4.7.2-gentoo-security.patch169
-rw-r--r--net-misc/whois/whois-4.7.2.ebuild47
5 files changed, 239 insertions, 2 deletions
diff --git a/net-misc/whois/ChangeLog b/net-misc/whois/ChangeLog
index 8eb3cc09fa0b..5d7f94770bc6 100644
--- a/net-misc/whois/ChangeLog
+++ b/net-misc/whois/ChangeLog
@@ -1,6 +1,14 @@
# ChangeLog for net-misc/whois
-# Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-misc/whois/ChangeLog,v 1.43 2004/12/29 20:16:50 ciaranm Exp $
+# Copyright 1999-2005 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/whois/ChangeLog,v 1.44 2005/04/19 00:04:33 vapier Exp $
+
+*whois-4.7.2 (19 Apr 2005)
+
+ 19 Apr 2005; Mike Frysinger <vapier@gentoo.org>
+ +files/whois-4.7.2-config-file.patch,
+ +files/whois-4.7.2-gentoo-security.patch, +whois-4.7.2.ebuild:
+ Version bump #73845 by Daniel Webert and add /etc/whois.conf support #89417
+ by Wakko Warner.
29 Dec 2004; Ciaran McCreesh <ciaranm@gentoo.org> :
Change encoding to UTF-8 for GLEP 31 compliance
diff --git a/net-misc/whois/files/digest-whois-4.7.2 b/net-misc/whois/files/digest-whois-4.7.2
new file mode 100644
index 000000000000..865099d95ef5
--- /dev/null
+++ b/net-misc/whois/files/digest-whois-4.7.2
@@ -0,0 +1 @@
+MD5 d05fddf828be83f007ece656e6d9a41f whois_4.7.2.tar.gz 53267
diff --git a/net-misc/whois/files/whois-4.7.2-config-file.patch b/net-misc/whois/files/whois-4.7.2-config-file.patch
new file mode 100644
index 000000000000..24ffb3de9ae8
--- /dev/null
+++ b/net-misc/whois/files/whois-4.7.2-config-file.patch
@@ -0,0 +1,12 @@
+Enable /etc/whois.conf support.
+
+http://bugs.gentoo.org/show_bug.cgi?id=89417
+
+--- config.h
++++ config.h
+@@ -13,5 +13,3 @@
+ /* Configuration file */
+-/*
+ #define CONFIG_FILE "/etc/whois.conf"
+-*/
+
diff --git a/net-misc/whois/files/whois-4.7.2-gentoo-security.patch b/net-misc/whois/files/whois-4.7.2-gentoo-security.patch
new file mode 100644
index 000000000000..2d6c7b78d4a3
--- /dev/null
+++ b/net-misc/whois/files/whois-4.7.2-gentoo-security.patch
@@ -0,0 +1,169 @@
+--- whois-4.7.2/whois.c
++++ whois-4.7.2/whois.c
+@@ -76,7 +76,7 @@ int main(int argc, char *argv[])
+ /* RIPE flags */
+ if (strchr(ripeflags, ch)) {
+ for (p = fstring; *p; p++);
+- sprintf(p--, "-%c ", ch);
++ snprintf(p--, sizeof(fstring)-1, "-%c ", ch);
+ continue;
+ }
+ if (strchr(ripeflagsp, ch)) {
+@@ -121,7 +121,7 @@ int main(int argc, char *argv[])
+ usage();
+
+ /* On some systems realloc only works on non-NULL buffers */
+- qstring = malloc(64);
++ qstring = xmalloc(64);
+ *qstring = '\0';
+
+ /* parse other parameters, if any */
+@@ -130,11 +130,11 @@ int main(int argc, char *argv[])
+
+ while (1) {
+ qslen += strlen(*argv) + 1 + 1;
+- qstring = realloc(qstring, qslen);
+- strcat(qstring, *argv++);
++ qstring = xrealloc(qstring, qslen);
++ strncat(qstring, *argv++, qslen-1);
+ if (argc == 1)
+ break;
+- strcat(qstring, " ");
++ strncat(qstring, " ", qslen-1);
+ argc--;
+ }
+ }
+@@ -428,8 +428,10 @@ char *queryformat(const char *server, co
+ char *buf;
+ int i, isripe = 0;
+
++ /* buflen was always 0 in original patch and buf was allocated twice /Aye */
+ /* 64 bytes reserved for server-specific flags added later */
+- buf = malloc(strlen(flags) + strlen(query) + strlen(client_tag) + 64);
++ int buflen = strlen(flags) + strlen(query) + strlen(client_tag) + 64;
++ buf = xmalloc(buflen);
+ *buf = '\0';
+ for (i = 0; ripe_servers[i]; i++)
+ if (strcmp(server, ripe_servers[i]) == 0) {
+@@ -442,7 +444,7 @@ char *queryformat(const char *server, co
+ if (*flags) {
+ if (!isripe && strcmp(server, "whois.corenic.net") != 0)
+ puts(_("Warning: RIPE flags used with a traditional server."));
+- strcat(buf, flags);
++ strncat(buf, flags, buflen-1);
+ }
+
+ #ifdef HAVE_LIBIDN
+@@ -451,21 +453,21 @@ char *queryformat(const char *server, co
+ */
+ if (isripe && strcmp(server, "whois.denic.de") == 0 && domcmp(query, ".de")
+ && !strchr(query, ' ') && !*flags)
+- sprintf(buf, "-T dn,ace -C US-ASCII %s", query);
++ snprintf(buf, buflen-1, "-T dn,ace -C US-ASCII %s", query);
+ else
+ #endif
+ if (!isripe && (strcmp(server, "whois.nic.mil") == 0 ||
+ strcmp(server, "whois.nic.ad.jp") == 0) &&
+ strncasecmp(query, "AS", 2) == 0 && isasciidigit(query[2]))
+ /* FIXME: /e is not applied to .JP ASN */
+- sprintf(buf, "AS %s", query + 2); /* fix query for DDN */
++ snprintf(buf, buflen-1, "AS %s", query + 2); /* fix query for DDN */
+ else if (!isripe && (strcmp(server, "whois.nic.ad.jp") == 0 ||
+ strcmp(server, "whois.jprs.jp") == 0)) {
+ char *lang = getenv("LANG"); /* not a perfect check, but... */
+ if (!lang || (strncmp(lang, "ja", 2) != 0))
+- sprintf(buf, "%s/e", query); /* ask for english text */
++ snprintf(buf, buflen-1, "%s/e", query); /* ask for english text */
+ else
+- strcat(buf, query);
++ strncat(buf, query, buflen-1);
+ } else
+ strcat(buf, query);
+ return buf;
+@@ -533,7 +535,7 @@ const char *do_query(const int sock, con
+
+ if (sscanf(buf, REFERTO_FORMAT, nh, np, nq) == 3) {
+ /* XXX we are ignoring the new query string */
+- referral_server = malloc(300);
++ referral_server = xmalloc(300);
+ sprintf(referral_server, "%s:%s", nh, np);
+ }
+ }
+@@ -582,7 +584,7 @@ const char *query_crsnic(const int sock,
+ int hide = hide_discl;
+ int state = 0;
+
+- temp = malloc(strlen(query) + 1 + 2 + 1);
++ temp = xmalloc(strlen(query) + 1 + 2 + 1);
+ *temp = '=';
+ strcpy(temp + 1, query);
+ strcat(temp, "\r\n");
+@@ -600,7 +602,7 @@ const char *query_crsnic(const int sock,
+
+ for (p = buf; *p != ':'; p++); /* skip until colon */
+ for (p++; *p == ' '; p++); /* skip colon and spaces */
+- ret = malloc(strlen(p) + 1);
++ ret = xmalloc(strlen(p) + 1);
+ for (q = ret; *p != '\n' && *p != '\r' && *p != ' '; *q++ = *p++)
+ ; /*copy data*/
+ *q = '\0';
+@@ -625,7 +627,7 @@ const char *query_pir(const int sock, co
+ int hide = hide_discl;
+ int state = 0;
+
+- temp = malloc(strlen(query) + 5 + 2 + 1);
++ temp = xmalloc(strlen(query) + 5 + 2 + 1);
+ strcpy(temp, "FULL ");
+ strcat(temp, query);
+ strcat(temp, "\r\n");
+@@ -646,7 +648,7 @@ const char *query_pir(const int sock, co
+ for (p = buf; *p != ':'; p++); /* skip until colon */
+ for (p++; *p != ':'; p++); /* skip until 2nd colon */
+ for (p++; *p == ' '; p++); /* skip colon and spaces */
+- ret = malloc(strlen(p) + 1);
++ ret = xmalloc(strlen(p) + 1);
+ for (q = ret; *p != '\n' && *p != '\r'; *q++ = *p++); /*copy data*/
+ *q = '\0';
+ state = 2;
+@@ -785,7 +787,7 @@ void split_server_port(const char *const
+
+ char *convert_6to4(const char *s)
+ {
+- char *new = malloc(sizeof("255.255.255.255"));
++ char *new = xmalloc(sizeof("255.255.255.255"));
+ unsigned int a, b;
+
+ if (sscanf(s, "2002:%x:%x:", &a, &b) != 2)
+@@ -848,6 +850,21 @@ void usage(void)
+ exit(0);
+ }
+
++/* Memory allocation routines */
++void *xmalloc(size_t size)
++{
++ void *ptr;
++ if ((ptr = malloc(size)) == NULL)
++ err_sys("malloc");
++ return ptr;
++}
++
++void *xrealloc(void *ptr, size_t size)
++{
++ if ((ptr = realloc(ptr, size)) == NULL)
++ err_sys("realloc");
++ return ptr;
++}
+
+ /* Error routines */
+ void err_sys(const char *fmt, ...)
+--- whois-4.7.2/whois.h
++++ whois-4.7.2/whois.h
+@@ -32,6 +32,8 @@ const char *handle_query(const char *ser
+ void split_server_port(const char *const input, const char **server,
+ const char **port);
+
++void *xmalloc(size_t);
++void *xrealloc(void *, size_t);
+ void err_quit(const char *,...);
+ void err_sys(const char *,...);
+
diff --git a/net-misc/whois/whois-4.7.2.ebuild b/net-misc/whois/whois-4.7.2.ebuild
new file mode 100644
index 000000000000..3678870d9052
--- /dev/null
+++ b/net-misc/whois/whois-4.7.2.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/whois/whois-4.7.2.ebuild,v 1.1 2005/04/19 00:04:33 vapier Exp $
+
+inherit eutils
+
+MY_P=${P/-/_}
+DESCRIPTION="improved Whois Client"
+HOMEPAGE="http://www.linux.it/~md/software/"
+SRC_URI="mirror://debian/pool/main/w/whois/${MY_P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sparc x86"
+IUSE="nls"
+RESTRICT="maketest" #59327
+
+RDEPEND="net-dns/libidn"
+DEPEND="${RDEPEND}
+ >=dev-lang/perl-5"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/${PN}-4.7.2-gentoo-security.patch
+ epatch "${FILESDIR}"/${PN}-4.7.2-config-file.patch
+
+ if use nls ; then
+ cd po
+ sed -i -e "s:/usr/bin/install:install:" Makefile
+ else
+ sed -i -e '/ENABLE_NLS/s:define:undef:' config.h
+ sed -i -e "s:cd po.*::" Makefile
+ fi
+}
+
+src_compile() {
+ emake OPTS="${CFLAGS}" HAVE_LIBIDN=1 || die
+}
+
+src_install() {
+ dodir /usr/bin /usr/share/man/man1
+ make BASEDIR="${D}" prefix=/usr install || die
+ insinto /etc
+ doins whois.conf
+ dodoc README
+}