2370612
diff -up jwhois-4.0/src/jwhois.c.orig jwhois-4.0/src/jwhois.c
f1b52e5
--- jwhois-4.0/src/jwhois.c.orig	2014-06-10 15:03:14.242929412 +0200
f1b52e5
+++ jwhois-4.0/src/jwhois.c	2014-06-10 15:08:15.056033249 +0200
2370612
@@ -98,7 +98,7 @@ main(int argc, char **argv)
2370612
 
2370612
   /* Parse remaining arguments and place them into the wq
2370612
      structure. */
2370612
-  while (optind < argc)
2370612
+  while (optind < argc-1)
2370612
     {
2370612
       count += strlen(argv[optind])+1;
2370612
       if (!qstring)
f1b52e5
@@ -116,19 +116,21 @@ main(int argc, char **argv)
2370612
       strcat(qstring, " ");
2370612
       optind++;
2370612
     }
2370612
-  qstring[strlen(qstring)-1] = '\0';
f1b52e5
 #ifdef LIBIDN2
f1b52e5
-  rc = idn2_lookup_ul(qstring, &idn, 0);
f1b52e5
+  rc = idn2_lookup_ul(argv[optind], &idn, 0);
f1b52e5
   if (rc != IDN2_OK)
2370612
     {
f1b52e5
-      printf("[IDN encoding of '%s' failed: %s)]\n", qstring, idn2_strerror(rc));
f1b52e5
+      printf("[IDN encoding of '%s' failed: %s)]\n", argv[optind], idn2_strerror(rc));
2370612
       exit(1);
2370612
     }
2370612
-  wq.query = strdup(idn);
2370612
+  qstring = realloc(qstring, count+strlen(idn)+1);
f1b52e5
+  memcpy(qstring+count, idn, strlen(idn)+1);
2370612
   free(idn);
2370612
 #else
2370612
-  wq.query = qstring;
2370612
+  qstring = realloc(qstring, count+strlen(argv[optind])+1);
f1b52e5
+  memcpy(qstring+count, argv[optind], strlen(argv[optind])+1);
2370612
 #endif
2370612
+  wq.query = qstring;
2370612
 
2370612
   if (ghost)
2370612
     {