mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-11-04 14:29:39 +00:00
fixed race condition in return value of netconn_gethostbyname() (and thus also lwip_gethostbyname/_r() and lwip_getaddrinfo())
Signed-off-by: sg <goldsimon@gmx.de>
This commit is contained in:
parent
b5f51dbd0c
commit
fcd2daf57c
@ -26,6 +26,10 @@ HISTORY
|
||||
|
||||
++ Bugfixes:
|
||||
|
||||
2016-12-16: Thomas Mueller
|
||||
* api_lib.c: fixed race condition in return value of netconn_gethostbyname()
|
||||
(and thus also lwip_gethostbyname/_r() and lwip_getaddrinfo())
|
||||
|
||||
2016-12-15: David van Moolenbroek
|
||||
* opt.h, tcp: added LWIP_HOOK_TCP_ISN() to implement less predictable initial
|
||||
sequence numbers (see contrib/addons/tcp_isn for an example implementation)
|
||||
|
@ -932,6 +932,7 @@ netconn_gethostbyname(const char *name, ip_addr_t *addr)
|
||||
sys_sem_t sem;
|
||||
#endif /* LWIP_MPU_COMPATIBLE */
|
||||
err_t err;
|
||||
err_t cberr;
|
||||
|
||||
LWIP_ERROR("netconn_gethostbyname: invalid name", (name != NULL), return ERR_ARG;);
|
||||
LWIP_ERROR("netconn_gethostbyname: invalid addr", (addr != NULL), return ERR_ARG;);
|
||||
@ -964,13 +965,13 @@ netconn_gethostbyname(const char *name, ip_addr_t *addr)
|
||||
}
|
||||
#endif /* LWIP_NETCONN_SEM_PER_THREAD */
|
||||
|
||||
err = tcpip_callback(lwip_netconn_do_gethostbyname, &API_VAR_REF(msg));
|
||||
if (err != ERR_OK) {
|
||||
cberr = tcpip_callback(lwip_netconn_do_gethostbyname, &API_VAR_REF(msg));
|
||||
if (cberr != ERR_OK) {
|
||||
#if !LWIP_NETCONN_SEM_PER_THREAD
|
||||
sys_sem_free(API_EXPR_REF(API_VAR_REF(msg).sem));
|
||||
#endif /* !LWIP_NETCONN_SEM_PER_THREAD */
|
||||
API_VAR_FREE(MEMP_DNS_API_MSG, msg);
|
||||
return err;
|
||||
return cberr;
|
||||
}
|
||||
sys_sem_wait(API_EXPR_REF_SEM(API_VAR_REF(msg).sem));
|
||||
#if !LWIP_NETCONN_SEM_PER_THREAD
|
||||
|
Loading…
Reference in New Issue
Block a user