aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--networking/whois.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/networking/whois.c b/networking/whois.c
index f0ec86301..f3da32b4e 100644
--- a/networking/whois.c
+++ b/networking/whois.c
@@ -39,20 +39,26 @@ static char *query(const char *host, int port, const char *domain)
bool success;
char *redir = NULL;
const char *pfx = "";
- char linebuf[1024];
+ /* some .io domains reported to have very long strings in whois
+ * responses, 1k was not enough:
+ */
+ char linebuf[2 * 1024];
char *buf = NULL;
unsigned bufpos = 0;
again:
printf("[Querying %s:%d '%s%s']\n", host, port, pfx, domain);
fd = create_and_connect_stream_or_die(host, port);
- success = 0;
fdprintf(fd, "%s%s\r\n", pfx, domain);
fp = xfdopen_for_read(fd);
- while (fgets(linebuf, sizeof(linebuf), fp)) {
- unsigned len = strcspn(linebuf, "\r\n");
+ success = 0;
+ while (fgets(linebuf, sizeof(linebuf)-1, fp)) {
+ unsigned len;
+
+ len = strcspn(linebuf, "\r\n");
linebuf[len++] = '\n';
+ linebuf[len] = '\0';
buf = xrealloc(buf, bufpos + len + 1);
memcpy(buf + bufpos, linebuf, len);