On ons, 2008-08-13 at 22:40 +1200, Amos Jeffries wrote:
> Henrik Nordstrom wrote:
> > On ons, 2008-08-13 at 16:25 +1200, Amos Jeffries wrote:
> >>> Or maybe = "" should be equivalent to SetEmpty() in which case the
> >>> original code works, and can be simplified a lot... not sure how
> >>> IPAddress is supposed to work here, if it at all is supposed to be used
> >>> in = ""..
> >> It should be capable of accepting it. "" == NULL == "garbage" to IPAddress.
> > 
> > Assigning "garbage" is an error.
> > 
> > What should the IPAddress be set to in such case?
> 
> Should be no-addr aka empty in all parsing failed cases. The only valid 
> non-IP case is a resolvable FQDN, which becomes the first located IP.

Hmm.. looking again at the code and the logics is quite messed up
regarding addr2.

Should be
    /* Decode addr2 */
    if (!*addr2) 
        r->addr2.SetAnyAddr();
    else if (!(q->addr2=addr2) ) {
        debugs(28, 0, "aclIpParseIpData: unknown second address in '" <<
t << "'");


addr1 is also a bit busted.. should check that the address parsed fine
and barf otherwise.

fixing up both into something that makes sense.

And I also found the trigger making this show up on Windows.. The
substitute xgetaddrinfo() function does not return error on blank or
invalid addresses, instead the address -1 (~0) is returned..

Regards
Henrik

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to