On Sun, 2009-06-28 at 19:14 +0100, Adam D. Barratt wrote:
> Package: mailutils
> Version: 1:2.0+dfsg1-2
> Severity: serious
> 
> mailutils is failing to build on armel.  The relevant section of the log 
> appears to be:
> 
> /===============================================
> |
> |             === frm tests ===
> | 
> |  Schedule of variations:
> |      unix
> |
> |  Running target unix
> |  Using /usr/share/dejagnu/baseboards/unix.exp as board description file for 
> target.
> |  Using /usr/share/dejagnu/config/unix.exp as generic interface file for 
> target.
> |  WARNING: Couldn't find tool config file for unix, using default.
> |  Running /build/buildd/mailutils-2.0+dfsg1/frm/testsuite/frm/test.exp ...
> |  FAIL: frm -q %nonexistent
> |
> \===============================================

>From my debugging so far, the failure appears to be due to a real bug,
rather than a problem with the testsuite; it looks like a NULL pointer
is being stored in a dictionary(ish) and then being passed to strcmp()
with predictably explosive results.

In this particular case, calling "frm" with the arguments "-q %
nonexistent" tries to add an item to the dictionary associating the key
"user" to the value "nonexistent".  Running "frm -q %nonexistent" (or
more precisely, "frm/.libs/lt-frm -q %nonexistent") produces a segfault,
as does using %adam and so on.

The problem seems to be in this section of code from
mailbox/assoc.c:assoc_lookup_or_install; "name" is a const char*
containing "user" and elem a structure whose "name" element is a char*.

  if (elem->name == NULL)
    {
      *install = 1;
      if (assoc->flags & MU_ASSOC_COPY_KEY)
        elem->name = (char *) name;
      else
        {
          elem->name = strdup (name);
          if (!elem->name)
            return ENOMEM;
        }
      *elp = elem;
      return 0;
    }

Assuming I'm driving gdb correctly, the strdup() line is being executed,
and afterwards elem->name is still NULL, suggesting that the strdup()
failed.  However, the ENOMEM return isn't being hit and the "*elp =
elem" assignment is instead.

Regards,

Adam



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to