diff -r 27580a47ae28 -r 9eb8f52893d0 libpurple/dnssrv.c --- a/libpurple/dnssrv.c Sun May 11 22:31:38 2014 +0200 +++ b/libpurple/dnssrv.c Tue May 13 00:26:43 2014 +0200 @@ -555,6 +555,14 @@ responses = NULL; break; } + if (len > MAX_ADDR_RESPONSE_LEN) { + purple_debug_error("dnssrv", "we've read invalid number\n"); + size = 0; + g_list_foreach(responses, (GFunc)purple_txt_response_destroy, NULL); + g_list_free(responses); + responses = NULL; + break; + } res = g_new0(PurpleTxtResponse, 1); res->content = g_new0(gchar, len);