* Vineet Gupta:

> Here's a simple test case which shows the problem:
>
>       #define _GNU_SOURCE
>       #include <stdio.h>
>       #include <stdlib.h>
>       #include <errno.h>
>
>       void main(void)
>       {
>               const char *this_func = "finite";
>               char *test_name;
>
>               errno = 0;
>               if (asprintf (&test_name, "%s (%s)", this_func, "my-str") == -1)
>                       abort ();
>
>               printf("%d\n", errno);  // <-- prints 11
>       }
>
> The errno unconditionally being set to EAGAIN seems to have been
> introduced in commit 568ceebf6adfc58c64a95133311268db6 ("Fix
> infinite loop when fopencookie custom write returns 0 on error")
> bakc in 2016.

For functions specified by standards, successful calls can alter errno
unless specified otherwise.  asprintf is not a standardized function,
but it is reasonable to expect that a similar rule applies.

_______________________________________________
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc

Reply via email to