zero {host,serv}ent_data before passing it to the system functions to avoid crashing (see #10332)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58386 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -121,15 +121,29 @@ IMPLEMENT_DYNAMIC_CLASS(wxUNIXaddress, wxSockAddress)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// the _r functions need the extra buffer parameter but unfortunately its type
|
// the _r functions need the extra buffer parameter but unfortunately its type
|
||||||
// differs between different systems
|
// differs between different systems and for the systems which use opaque
|
||||||
|
// structs for it (at least AIX and OpenBSD) it must be zero-filled before
|
||||||
|
// being passed to the system functions
|
||||||
#ifdef HAVE_FUNC_GETHOSTBYNAME_R_3
|
#ifdef HAVE_FUNC_GETHOSTBYNAME_R_3
|
||||||
typedef hostent_data wxGethostBuf;
|
struct wxGethostBuf : hostent_data
|
||||||
|
{
|
||||||
|
wxGethostBuf()
|
||||||
|
{
|
||||||
|
memset(this, 0, sizeof(hostent_data));
|
||||||
|
}
|
||||||
|
};
|
||||||
#else
|
#else
|
||||||
typedef char wxGethostBuf[1024];
|
typedef char wxGethostBuf[1024];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_FUNC_GETSERVBYNAME_R_3
|
#ifdef HAVE_FUNC_GETSERVBYNAME_R_3
|
||||||
typedef servent_data wxGetservBuf;
|
struct wxGetservBuf : servent_data
|
||||||
|
{
|
||||||
|
wxGethostBuf()
|
||||||
|
{
|
||||||
|
memset(this, 0, sizeof(servent_data));
|
||||||
|
}
|
||||||
|
};
|
||||||
#else
|
#else
|
||||||
typedef char wxGetservBuf[1024];
|
typedef char wxGetservBuf[1024];
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user