NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

lib/41567: posix_memalign(3) taints errno when it shouldn't.



>Number:         41567
>Category:       lib
>Synopsis:       posix_memalign(3) taints errno when it shouldn't.
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    lib-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Jun 10 08:15:00 +0000 2009
>Originator:     Stathis Kamperis
>Release:        NetBSD 5.0_STABLE
>Organization:
Aristotle University of Thessaloniki
>Environment:
NetBSD voyager 5.0_STABLE NetBSD 5.0_STABLE (MYGENERIC) #4: Sat May 23 15:45:44 
EEST 2009  root@voyager:/usr/obj/sys/arch/i386/compile/MYGENERIC i386

>Description:
posix_memalign(3) is supposed to return an error value, not set the errno 
variable.
>How-To-Repeat:
#include <assert.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
        void *ptr;
        int old_errno;

        /*
         * Save old errno value to see if posix_memalign() messes with it
         * (error codes are supposed to be returned, not be saved to errno).
         */
        old_errno = errno;

        /* Alignment parameter is not a power of 2. */
        assert(posix_memalign(&ptr, 1 + (sizeof(void *) << 5), 100) == EINVAL);
        assert(old_errno == errno);

        printf("passed\n");

        return (EXIT_SUCCESS);
}

>Fix:



Home | Main Index | Thread Index | Old Index