From: chenwu Date: Thu, 28 Jun 2018 09:27:10 +0000 (+0800) Subject: coap: pass null-terminated string to gethostbyname X-Git-Tag: v3.2-beta1~376^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4898135c1572a17574615a856c4818820538f46f;p=esp-idf coap: pass null-terminated string to gethostbyname coap client parse a string by `coap_split_uri`,fetch host should by `host.length` otherwise, would cause `gethostbyname` failed because of inappropriate parameter. --- diff --git a/examples/protocols/coap_client/main/coap_client_example_main.c b/examples/protocols/coap_client/main/coap_client_example_main.c index 98f003e1ad..e2d1b96845 100644 --- a/examples/protocols/coap_client/main/coap_client_example_main.c +++ b/examples/protocols/coap_client/main/coap_client_example_main.c @@ -79,7 +79,7 @@ static void coap_example_task(void *p) coap_pdu_t* request = NULL; const char* server_uri = COAP_DEFAULT_DEMO_URI; uint8_t get_method = 1; - + char* phostname = NULL; while (1) { /* Wait for the callback to set the CONNECTED_BIT in the event group. @@ -93,7 +93,16 @@ static void coap_example_task(void *p) break; } - hp = gethostbyname((const char *)uri.host.s); + phostname = (char *)calloc(1, uri.host.length + 1); + + if (phostname == NULL) { + ESP_LOGE(TAG, "calloc failed"); + continue; + } + + memcpy(phostname, uri.host.s, uri.host.length); + hp = gethostbyname(phostname); + free(phostname); if (hp == NULL) { ESP_LOGE(TAG, "DNS lookup failed");