aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Yuchen Zeng <zyc@google.com>2016-08-09 21:09:12 -0700
committerGravatar Yuchen Zeng <zyc@google.com>2016-08-09 21:09:12 -0700
commitd284493a63e676163584e1cc8be9fbe379d2e831 (patch)
treea3bf14a2af3c0ed8b9d3dbca5e5c37110ff2be76
parent8917aecf56265e09df657de79dd7ec28e704e3f6 (diff)
Fix asan issue, ignore invalid-source-encoding warning when building c-ares with clang
-rw-r--r--Makefile3
-rw-r--r--src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c28
-rw-r--r--templates/Makefile.template3
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"