Em 06-06-2014 03:49, Fabian Raetz escreveu:
> On Thu, Jun 05, 2014 at 07:39:01PM +0200, Fabian Raetz wrote:
>> Hi tech@,
> Please ignore this thread!
>
> A reboot after rebuilding userland fixed the problem. Sorry!
>
>> when calling ifconfig(8) with a not supported option like below, it
>> segfaults.
>>
>>      ifconfig [interface] -someParameterNotSupportedWithALeadingMinus
>>      ifconfig re0 -adaw
>>      ifconfig iwn0 -media
>>
>>
>> Here's a backtrace:
>>
>> #0  strlcpy (dst=0x84c658 <_entbuf+24> "", src=0x0, siz=<optimized out>) at 
>> /usr/src/lib/libc/string/strlcpy.c:37
>> #1  0x0000000000413a45 in _fillhostent (h=0x200f7f800, r=0x84c620 
>> <_hostent>, buf=<optimized out>, len=4096) at 
>> /usr/src/lib/libc/asr/gethostnamadr.c:73
>> #2  0x0000000000413ceb in _gethostbyname (h_errnop=<optimized out>, 
>> buflen=<optimized out>, buf=<optimized out>, ret=<optimized out>, 
>> af=<optimized out>, 
>>     name=<optimized out>) at /usr/src/lib/libc/asr/gethostnamadr.c:125
>> #3  gethostbyname2 (name=<optimized out>, af=2) at 
>> /usr/src/lib/libc/asr/gethostnamadr.c:152
>> #4  0x000000000040ae78 in in_getaddr (s=0x7f7ffffd6f93 "-asdf", which=1) at 
>> /usr/src/sbin/ifconfig/ifconfig.c:4556
>> #5  0x00000000004019b4 in setifaddr (addr=0x7f7ffffd6f93 "-asdf", param=0) 
>> at /usr/src/sbin/ifconfig/ifconfig.c:1112
>> #6  0x0000000000400b01 in main (argc=1, argv=0x7f7ffffd6d78) at 
>> /usr/src/sbin/ifconfig/ifconfig.c:738
>>
>>
>>
>> And here a patch that fixes the problem for me. Hope this is the right
>> place to errx().
>>
>>
>> Another thing i observed is that when calling "ifconfig re0 awdawd"
>> it behaves like calling "ifconfig re0 up" but i have not looked into
>> this.
>>
>> Tested against -current amd64
>>
>> Regards,
>> Fabian
>>
>>
>> Index: ifconfig.c
>> ===================================================================
>> RCS file: /cvs/src/sbin/ifconfig/ifconfig.c,v
>> retrieving revision 1.283
>> diff -u -p -r1.283 ifconfig.c
>> --- ifconfig.c       12 May 2014 08:47:37 -0000      1.283
>> +++ ifconfig.c       5 Jun 2014 17:17:17 -0000
>> @@ -4552,14 +4552,15 @@ in_getaddr(const char *s, int which)
>>                      errx(1, "%d: bad prefixlen", bits);
>>              in_getprefix(p, MASK);
>>              memcpy(&sin->sin_addr, &tsin.sin_addr, sizeof(sin->sin_addr));
>> -    } else if (inet_aton(s, &sin->sin_addr) == 0) {
>> +    } else if (inet_aton(s, &sin->sin_addr) == 1) {
>>              if ((hp = gethostbyname(s)))
>>                      memcpy(&sin->sin_addr, hp->h_addr, hp->h_length);
>>              else if ((np = getnetbyname(s)))
>>                      sin->sin_addr = inet_makeaddr(np->n_net, INADDR_ANY);
>>              else
>>                      errx(1, "%s: bad value", s);
>> -    }
>> +    } else
>> +            errx(1, "%s: bad value", s);
>>  }
>>  
>>  /* ARGSUSED */
Fabian,

    Is your machine running under qemu/kvm? If so, you might had came
across the same issue I had:

http://marc.info/?l=openbsd-tech&m=140026687510910&w=2

    It's nice to know that the latest snapshot solves this issue. I'll
give it a try.

Cheers,

-- 
Giancarlo Razzolini
GPG: 4096R/77B981BC

Reply via email to