summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-misc/whois/files/whois-4.7.2-gentoo-security.patch')
-rw-r--r--net-misc/whois/files/whois-4.7.2-gentoo-security.patch169
1 files changed, 0 insertions, 169 deletions
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
deleted file mode 100644
index 39553a6ec3af..000000000000
--- a/net-misc/whois/files/whois-4.7.2-gentoo-security.patch
+++ /dev/null
@@ -1,169 +0,0 @@
---- 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), "-%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 *,...);
-