diff options
author | Mike Frysinger <vapier@gentoo.org> | 2005-04-19 00:04:33 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2005-04-19 00:04:33 +0000 |
commit | e452d4ba75478ddcbf8b42af2725f4e14237cdb1 (patch) | |
tree | 483e70912f3da2539d10fb16c288f8f874389980 /net-misc/whois | |
parent | Pruned old ebuilds, fixed dependency on libmpeg2-0.3* for vlc-0.6.2 (fixes #6... (diff) | |
download | gentoo-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/ChangeLog | 12 | ||||
-rw-r--r-- | net-misc/whois/files/digest-whois-4.7.2 | 1 | ||||
-rw-r--r-- | net-misc/whois/files/whois-4.7.2-config-file.patch | 12 | ||||
-rw-r--r-- | net-misc/whois/files/whois-4.7.2-gentoo-security.patch | 169 | ||||
-rw-r--r-- | net-misc/whois/whois-4.7.2.ebuild | 47 |
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 +} |