From 28e0e4db61df4d4309a961e364ea9e2cb2ba5846 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 1 Apr 2012 09:58:45 +0000 Subject: -fixing #2243 --- src/dns/gnunet-service-dns.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/dns/gnunet-service-dns.c') diff --git a/src/dns/gnunet-service-dns.c b/src/dns/gnunet-service-dns.c index 37d2fbca8..fbb27e4bc 100644 --- a/src/dns/gnunet-service-dns.c +++ b/src/dns/gnunet-service-dns.c @@ -289,6 +289,11 @@ struct TunnelState }; +/** + * Global return value from 'main'. + */ +static int global_ret; + /** * The configuration to use */ @@ -1552,6 +1557,16 @@ run (void *cls, struct GNUNET_SERVER_Handle *server, struct in6_addr dns_exit6; cfg = cfg_; + if (GNUNET_YES != + GNUNET_OS_check_helper_binary ("gnunet-helper-dns")) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + _("`%s' must be installed SUID, refusing to run\n"), + "gnunet-helper-dns"); + global_ret = 1; + return; + } + stats = GNUNET_STATISTICS_create ("dns", cfg); nc = GNUNET_SERVER_notification_context_create (server, 1); GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &cleanup_task, @@ -1662,7 +1677,7 @@ main (int argc, char *const *argv) { return (GNUNET_OK == GNUNET_SERVICE_run (argc, argv, "dns", GNUNET_SERVICE_OPTION_NONE, - &run, NULL)) ? 0 : 1; + &run, NULL)) ? global_ret : 1; } -- cgit v1.2.3