Maybe you could write a regression test for this function?



Rein Klazes wrote:


hi,

In the newsgroup someone reported a crash in gethostbyname() when the
application called it with a null parameter.

msdn says about this:

| If null is provided in the name parameter, the returned string is
| the same as the string returned by a successful gethostname
| function call.

gethostbyname does not return a string, but I think this it what they
meant to say.
I have tested gethostbyname under Win2K to do this.

Changelog:
        dlls/winsock    : socket.c async.c
        _ws_gethostbyname() and WSAAsyncGetHostByName() when called with
        a null name, should use the name returned by gethostname().

Rein.


------------------------------------------------------------------------

--- wine/dlls/winsock/socket.c 2003-08-31 10:00:10.000000000 +0200
+++ mywine/dlls/winsock/socket.c 2003-08-31 09:59:16.000000000 +0200
@@ -2903,6 +2903,16 @@
int ebufsize=1024;
struct hostent hostentry;
int locerr = ENOBUFS;
+#endif
+ char buf[100];
+ if( !name) {
+ name = buf;
+ if( gethostname( buf, 100) == -1) {
+ SetLastError( WSAENOBUFS); /* appropriate ? */
+ return retval;
+ }
+ }
+#ifdef HAVE_LINUX_GETHOSTBYNAME_R_6
host = NULL;
extrabuf=HeapAlloc(GetProcessHeap(),0,ebufsize) ;
while(extrabuf) {
--- wine/dlls/winsock/async.c 2003-08-31 10:00:10.000000000 +0200
+++ mywine/dlls/winsock/async.c 2003-08-31 09:47:31.000000000 +0200
@@ -402,6 +402,16 @@
int ebufsize=1024;
struct hostent hostentry;
int locerr = ENOBUFS;
+#endif
+ char buf[100];
+ if( !(aq->host_name)) {
+ aq->host_name = buf;
+ if( gethostname( buf, 100) == -1) {
+ fail = WSAENOBUFS; /* appropriate ? */
+ break;
+ }
+ }
+#ifdef HAVE_LINUX_GETHOSTBYNAME_R_6
he = NULL;
extrabuf=HeapAlloc(GetProcessHeap(),0,ebufsize) ;
while(extrabuf) {







Reply via email to