pw is broken?

From: KT Sin <ktsin_at_acm.org>
Date: Fri, 8 Mar 2013 21:43:50 -0800 (PST)
pw is crashing with seg fault due to this change?

http://svnweb.freebsd.org/base/head/lib/libutil/gr_util.c?r1=245390&r2=247919

# gdb ./pw
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "amd64-marcel-freebsd"...
(gdb) run groupadd test123 -g 12345
Starting program: /usr/src/usr.sbin/pw/pw groupadd test123 -g 12345

Program received signal SIGSEGV, Segmentation fault.
0x0000000080d84a4f in stpcpy () from /lib/libc.so.7
(gdb) bt full
#0  0x0000000080d84a4f in stpcpy () from /lib/libc.so.7
No symbol table info available.
#1  0x0000000080a5c00a in grcopy (gr=0x612ce0, newgr=0x81409100, name=0x0,
    ndx=0) at /usr/src/lib/libutil/gr_util.c:496
        dst = 0x8 <Error reading address 0x8: Bad address>
        i = 1090277153
#2  0x0000000080a5bdc6 in gr_add (gr=0x612ce0, newmember=0x0)
    at /usr/src/lib/libutil/gr_util.c:451
        newgr = (struct group *) 0x81409100
        len = 0
        num_mem = 0
#3  0x0000000080a5bd4f in gr_dup (gr=0x612ce0)
    at /usr/src/lib/libutil/gr_util.c:434
No locals.
#4  0x000000000040bad7 in gr_update (grp=0x612ce0, group=0x0) at grupd.c:78
        pfd = 0
        tfd = 4244492
        gr = (struct group *) 0x0
        old_gr = (struct group *) 0x0
#5  0x000000000040ba8f in addgrent (grp=0x612ce0) at grupd.c:111
No locals.
#6  0x000000000040a83d in pw_group (cnf=0x612bf0, mode=0, args=0x613e78)
    at pw_group.c:258
---Type <return> to continue, or q <return> to quit---
        grp = (struct group *) 0x612ce0
        members = (char **) 0x81485d00
        rc = 0
        a_name = (struct carg *) 0x8144c0a0
        a_gid = (struct carg *) 0x8144c0c0
        arg = (struct carg *) 0x0
        grmembers = 200
        fakegroup = {gr_name = 0x7fffffffdcb9 "test123",
  gr_passwd = 0x40fbc9 "*", gr_gid = 12345, gr_mem = 0x81485d00}
#7  0x00000000004037fb in main (argc=3, argv=0x7fffffffd9f0) at pw.c:230
        which = 1
        config = 0x0
        cnf = (struct userconf *) 0x612bf0
        ch = -1
        mode = 0
        opts = {{0x40e150 "V:C:qn:u:c:d:e:p:g:G:mM:k:s:oL:i:w:h:H:Db:NPy:Y",
    0x40e180 "V:C:qn:u:rY",
    0x40e18c "V:C:qn:u:c:d:e:p:g:G:mM:l:k:s:w:L:h:H:FNPY",
    0x40e1b7 "V:C:qn:u:FPa7", 0x40e1c5 "V:C:q", 0x40e1c5 "V:C:q",
    0x40e1c5 "V:C:q"}, {0x40e1cb "V:C:qn:g:h:H:M:opNPY",
    0x40e1e0 "V:C:qn:g:Y", 0x40e1eb "V:C:qn:d:g:l:h:H:FM:m:NPY",
    0x40e205 "V:C:qn:g:FPa", 0x40e1c5 "V:C:q", 0x0, 0x0}}
        funcs = {0x405270 <pw_user>, 0x409b60 <pw_group>}
(gdb)
Received on Sat Mar 09 2013 - 04:43:59 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:35 UTC