This test (test 86) from syslog core dumps
on Itanium. This looks like a dubious test,
as the SUS tells me:

"The format can contain either numbered argument
specifications (that is %n$ or *m$), or unnumbered
argument specifications (that is % or *), but
normally not both.  ...  The results of mixing
numbered and unnumbred argument specifications in 
a format string are undefined.

Note that the format string beloe contains three
numbered specifications, followed by '%d', which
is unnumbered.  When I change the last specifier
to %4$d the test runs without core dumping.
However, it does not seem to do what one might
expect - I'm reading intent as:
1. Print arg 1 as a string
2. Save bytes transferred so far into arg3
3. Print arg 2 as a string
4. Print arg 4 as a string

After the "fix", the output is zero for arg4
(I verified the same thing on ia32).

Does this look like a valid bug?


static void
sub_test86(int type, char **result)
{
        char *s1 = "hello";
        char *s2 = "world";
        int     n1 = 0;

        if (type == CALL_SPRINTF)
        {
                (void) sprintf(*result, "%1$s%3$n %2$s %d", s1, s2, &n1,
n1);
        }

        if (type == CALL_SYSLOG)
        {
                syslog(LOG_DEBUG, "%1$s%3$n %2$s %d", s1, s2, &n1, n1);
        }

        return;
}




-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with subject of "unsubscribe". Trouble? Email [EMAIL PROTECTED]

Reply via email to