>Synopsis:      cc claims ISO C99 support, but %n printf format specifier calls 
>abort()
>Category:      
>Environment:
        System      : OpenBSD 7.2
        Details     : OpenBSD 7.2 (GENERIC.MP) #2: Thu Nov 24 23:54:39 MST 2022
                         
r...@syspatch-72-amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP

        Architecture: OpenBSD.amd64
        Machine     : amd64
>Description:

The compiler claims ISO C99 support (__STDC__ == 1 && __STDC_VERSION__ >= 
199901)
but does not support the %n printf format specifier, which calls abort().

>How-To-Repeat:

Consider the following C program (tst.c):

#include <stdio.h>

int main (void)
{
  int n;

#if __STDC__ == 1 && __STDC_VERSION__ >= 199901
  printf ("%nhello world", &n);
#endif
  return 0;
}

gcc220$ cc tst.c -o tst
tst.c:8:13: warning: '%n' format specifier support is deactivated and will call 
abort(3)
  printf ("%nhello world", &n);
           ~^
1 warning generated.
gcc220$ ./tst
Abort trap (core dumped)

>Fix:

Until %n gets implemented, __STDC__ should not be set to 1.

Reply via email to