gthreadedresolver: Fix initialisation on FreeBSD

res_ninit() requires the __res_state struct passed to it to be
zero-filled on FreeBSD.

Spotted and analysed by Ashish SHUKLA.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Fixes #1697
This commit is contained in:
Philip Withnall 2019-02-25 11:22:45 +00:00
parent 04528e60b6
commit 6e7e5fff9a

View File

@ -940,8 +940,10 @@ do_lookup_records (GTask *task,
* What we have currently is not particularly worse than using res_query() in
* worker threads, since it would transparently call res_init() for each new
* worker thread. (Although the workers would get reused by the
* #GThreadPool.) */
struct __res_state res;
* #GThreadPool.)
*
* FreeBSD requires the state to be zero-filled before calling res_ninit(). */
struct __res_state res = { 0, };
if (res_ninit (&res) != 0)
{
g_task_return_new_error (task, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL,