-adding libidn--towards fixing #2475
[oweals/gnunet.git] / src / dns / gnunet-dns-redirector.c
index cc317e5e424e0901f1487ec6366f14de29aef07f..5ba7e87c6f3c512e0ea6a3553265aafaf0f4320a 100644 (file)
 
 #include "platform.h"
 #include "gnunet_util_lib.h"
-#include "gnunet_dns_service-new.h"
+#include "gnunet_dns_service.h"
 #include "gnunet_dnsparser_lib.h"
 
 /**
- * Handle to transport service.
+ * Handle to DNS service.
  */
 static struct GNUNET_DNS_Handle *handle;
 
@@ -56,9 +56,9 @@ static int verbosity;
 
 
 /**
- * Output the given DNS query to stdout.
+ * Modify the given DNS record.
  *
- * @param query query to display.
+ * @param record record to modify
  */
 static void
 modify_record (const struct GNUNET_DNSPARSER_Record *record)
@@ -77,7 +77,7 @@ modify_record (const struct GNUNET_DNSPARSER_Record *record)
                 "Changing A record from `%s' to `%s'\n",
                 inet_ntop (AF_INET, record->data.raw.data, buf, sizeof (buf)),
                 n4);
-      inet_pton (AF_INET, n4, record->data.raw.data);
+      GNUNET_assert (1 == inet_pton (AF_INET, n4, record->data.raw.data));
     }
     break;
   case GNUNET_DNSPARSER_TYPE_AAAA:
@@ -90,7 +90,7 @@ modify_record (const struct GNUNET_DNSPARSER_Record *record)
                 "Changing AAAA record from `%s' to `%s'\n",
                 inet_ntop (AF_INET6, record->data.raw.data, buf, sizeof (buf)),
                 n6);
-      inet_pton (AF_INET6, n6, record->data.raw.data);
+      GNUNET_assert (1 == inet_pton (AF_INET6, n6, record->data.raw.data));
     }
     break;
   case GNUNET_DNSPARSER_TYPE_NS:
@@ -199,6 +199,25 @@ static void
 run (void *cls, char *const *args, const char *cfgfile,
      const struct GNUNET_CONFIGURATION_Handle *cfg)
 {
+  struct in_addr i4;
+  struct in6_addr i6;
+  if ( (n4 != NULL) &&
+       (1 != inet_pton (AF_INET, n4, &i4)) )
+  {
+    fprintf (stderr,
+            "`%s' is nto a valid IPv4 address!\n",
+            n4);
+    return;
+  }
+  if ( (n6 != NULL) &&
+       (1 != inet_pton (AF_INET6, n6, &i6)) )
+  {
+    fprintf (stderr,
+            "`%s' is nto a valid IPv6 address!\n",
+            n6);
+    return;
+  }
+
   handle =
     GNUNET_DNS_connect (cfg, 
                        GNUNET_DNS_FLAG_POST_RESOLUTION,
@@ -222,6 +241,10 @@ main (int argc, char *const *argv)
     GNUNET_GETOPT_OPTION_VERBOSE (&verbosity),
     GNUNET_GETOPT_OPTION_END
   };
+
+  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+    return 2;
+
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "gnunet-dns-redirector",
                               gettext_noop