From d284493a63e676163584e1cc8be9fbe379d2e831 Mon Sep 17 00:00:00 2001 From: Yuchen Zeng Date: Tue, 9 Aug 2016 21:09:12 -0700 Subject: Fix asan issue, ignore invalid-source-encoding warning when building c-ares with clang --- Makefile | 3 ++- .../ext/resolver/dns/c_ares/grpc_ares_wrapper.c | 28 +++++++++++----------- templates/Makefile.template | 3 ++- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index 46bf013c34..f02511266f 100644 --- a/Makefile +++ b/Makefile @@ -676,6 +676,7 @@ ifeq ($(HAS_EMBEDDED_CARES),true) CARES_DEP = $(LIBDIR)/$(CONFIG)/c-ares/libcares.a CPPFLAGS := -Ithird_party/c-ares $(CPPFLAGS) LDFLAGS := -L$(LIBDIR)/$(CONFIG)/c-ares $(LDFLAGS) +CARES_CFLAGS_EXTRA = -Wno-invalid-source-encoding else DEP_MISSING += c-ares endif @@ -1242,7 +1243,7 @@ $(LIBDIR)/$(CONFIG)/protobuf/libprotobuf.a: third_party/protobuf/configure third_party/c-ares/configure: $(E) "[AUTOGEN] Preparing c-ares" - $(Q)(cd third_party/c-ares; ./buildconf; CC="$(CC)" CXX="$(CXX)" LDFLAGS="$(LDFLAGS_$(CONFIG)) -g $(CARES_LDFLAGS_EXTRA)" CPPFLAGS="$(PIC_CPPFLAGS) $(CPPFLAGS_$(CONFIG)) -g $(CARES_CPPFLAGS_EXTRA)" ./configure) + $(Q)(cd third_party/c-ares; ./buildconf; CC="$(CC)" CXX="$(CXX)" LDFLAGS="$(LDFLAGS_$(CONFIG)) -g $(CARES_LDFLAGS_EXTRA)" CFLAGS="-g $(CARES_CFLAGS_EXTRA)" CPPFLAGS="$(PIC_CPPFLAGS) $(CPPFLAGS_$(CONFIG)) -g $(CARES_CPPFLAGS_EXTRA)" ./configure) $(LIBDIR)/$(CONFIG)/c-ares/libcares.a: third_party/c-ares/configure $(E) "[MAKE] Building c-ares" diff --git a/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c b/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c index 396a44b58c..73ef9f8191 100644 --- a/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c +++ b/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c @@ -221,6 +221,8 @@ grpc_ares_request *grpc_resolve_address_ares_impl( char *host; char *port; grpc_error *err; + grpc_ares_request *r = NULL; + grpc_ares_ev_driver *ev_driver; if ((err = grpc_customized_resolve_address(name, default_port, addrs)) != GRPC_ERROR_CANCELLED) { @@ -228,25 +230,12 @@ grpc_ares_request *grpc_resolve_address_ares_impl( return NULL; } - grpc_ares_request *r = gpr_malloc(sizeof(grpc_ares_request)); - r->name = gpr_strdup(name); - r->default_port = gpr_strdup(default_port); - r->on_done = on_done; - r->addrs_out = addrs; - err = grpc_ares_ev_driver_create(&r->ev_driver, pollset_set); - - if (err != GRPC_ERROR_NONE) { - grpc_exec_ctx_sched(exec_ctx, on_done, err, NULL); - return NULL; - } - - if (name[0] == 'u' && name[1] == 'n' && name[2] == 'i' && name[3] == 'x' && name[4] == ':' && name[5] != 0) { grpc_exec_ctx_sched(exec_ctx, on_done, grpc_resolve_unix_domain_address(name + 5, addrs), NULL); - return r; + return NULL; } /* parse name, splitting it into host and port parts */ @@ -265,6 +254,17 @@ grpc_ares_request *grpc_resolve_address_ares_impl( } else if (try_fake_resolve(host, port, addrs)) { grpc_exec_ctx_sched(exec_ctx, on_done, GRPC_ERROR_NONE, NULL); } else { + err = grpc_ares_ev_driver_create(&ev_driver, pollset_set); + if (err != GRPC_ERROR_NONE) { + grpc_exec_ctx_sched(exec_ctx, on_done, err, NULL); + return NULL; + } + r = gpr_malloc(sizeof(grpc_ares_request)); + r->ev_driver = ev_driver; + r->on_done = on_done; + r->addrs_out = addrs; + r->name = gpr_strdup(name); + r->default_port = gpr_strdup(default_port); r->port = gpr_strdup(port); r->host = gpr_strdup(host); grpc_closure_init(&r->request_closure, request_resolving_address, r); diff --git a/templates/Makefile.template b/templates/Makefile.template index 507e1f8293..19ba658095 100644 --- a/templates/Makefile.template +++ b/templates/Makefile.template @@ -564,6 +564,7 @@ CARES_DEP = $(LIBDIR)/$(CONFIG)/c-ares/libcares.a CPPFLAGS := -Ithird_party/c-ares $(CPPFLAGS) LDFLAGS := -L$(LIBDIR)/$(CONFIG)/c-ares $(LDFLAGS) + CARES_CFLAGS_EXTRA = -Wno-invalid-source-encoding else DEP_MISSING += c-ares endif @@ -884,7 +885,7 @@ third_party/c-ares/configure: $(E) "[AUTOGEN] Preparing c-ares" - $(Q)(cd third_party/c-ares; ./buildconf; CC="$(CC)" CXX="$(CXX)" LDFLAGS="$(LDFLAGS_$(CONFIG)) -g $(CARES_LDFLAGS_EXTRA)" CPPFLAGS="$(PIC_CPPFLAGS) $(CPPFLAGS_$(CONFIG)) -g $(CARES_CPPFLAGS_EXTRA)" ./configure) + $(Q)(cd third_party/c-ares; ./buildconf; CC="$(CC)" CXX="$(CXX)" LDFLAGS="$(LDFLAGS_$(CONFIG)) -g $(CARES_LDFLAGS_EXTRA)" CFLAGS="-g $(CARES_CFLAGS_EXTRA)" CPPFLAGS="$(PIC_CPPFLAGS) $(CPPFLAGS_$(CONFIG)) -g $(CARES_CPPFLAGS_EXTRA)" ./configure) $(LIBDIR)/$(CONFIG)/c-ares/libcares.a: third_party/c-ares/configure $(E) "[MAKE] Building c-ares" -- cgit v1.2.3