gethostbyname() problem?
Yitzchak Scott-Thoennes
sthoenna@efn.org
Sun Feb 6 23:01:00 GMT 2005
On Sun, Feb 06, 2005 at 12:05:30PM +0100, Corinna Vinschen wrote:
> On Feb 6 00:35, Brian Dessent wrote:
> > - static int a, b, c, d;
> > + static int a, b, c, d, n;
> >
> > sig_dispatch_pending ();
> > if (check_null_str_errno (name))
> > return NULL;
> >
> > - if (sscanf (name, "%d.%d.%d.%d", &a, &b, &c, &d) == 4)
> > + if (sscanf (name, "%d.%d.%d.%d%n", &a, &b, &c, &d, &n) == 4 && (unsigned)n == strlen (name))
>
> Thanks for the patch, Brian. Do you also have a nice ChangeLog entry
> for me?
I've always done this like below; then the n==strlen(name) check isn't
needed (since the ==4 verifies that %c wasn't used). Even using the
%n, there's no reason to make n static, is there?
2005-02-06 Yitzchak Scott-Thoennes <sthoenna@efn.org>
* net.cc (cygwin_gethostbyname): Treat as hostname even if
beginning with "%d.%d.%d.%d"
--- winsup/cygwin/net.cc.orig 2004-04-11 10:41:17.000000000 -0700
+++ winsup/cygwin/net.cc 2005-02-06 13:49:42.783942400 -0800
@@ -997,12 +997,13 @@ cygwin_gethostbyname (const char *name)
static char *tmp_aliases[1];
static char *tmp_addr_list[2];
static int a, b, c, d;
+ char dummy;
sig_dispatch_pending ();
if (check_null_str_errno (name))
return NULL;
- if (sscanf (name, "%d.%d.%d.%d", &a, &b, &c, &d) == 4)
+ if (sscanf (name, "%d.%d.%d.%d%c", &a, &b, &c, &d, &dummy) == 4)
{
/* In case you don't have DNS, at least x.x.x.x still works */
memset (&tmp, 0, sizeof (tmp));
More information about the Cygwin-patches
mailing list