Bug 14250 - [ia64] ia64 makecontext.c writes to stderr and it should not.
Summary: [ia64] ia64 makecontext.c writes to stderr and it should not.
Status: RESOLVED WONTFIX
Alias: None
Product: glibc
Classification: Unclassified
Component: libc (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: 2.39
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-06-15 14:49 UTC by Carlos O'Donell
Modified: 2024-01-09 02:52 UTC (History)
6 users (show)

See Also:
Host: ia64-linux-gnu
Target: ia64-linux-gnu
Build: ia64-linux-gnu
Last reconfirmed:
fweimer: security-


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Carlos O'Donell 2012-06-15 14:49:26 UTC
The implementation of makecontext() for ia64 (ports/sysdeps/unix/sysv/linux/ia64/makecontext.c) writes to stderr if there are more than 8 arguments.

The function should not write to stderr, see bug #13983 for some background. Instead the function should set errno and return.

Unfortunately POSIX doesn't seem to dictate any errno for makecontext(), almost as if it should never fail. This is IMO an oversight, we should return EINVAL when > 8 arguments. At least IBM's XL C runtime returns EINVAL with invalid argc.

We must strive for a high QoI and avoid arbitrarily writing to stderr.
Comment 1 Mike Frysinger 2012-06-16 03:56:17 UTC
i did see this failure, but was trying to figure out how to make it work.  i'm not really worried about the stderr write ... the fact that it calls exit() seems like a much worse violation.

i could have it setup the context in such a way that when it calls setcontext, that function would return an error ...
Comment 2 Carlos O'Donell 2012-06-18 14:19:07 UTC
Mike,

I didn't notice the call to exit(). Calling exit() is definitely the wrong thing to do in this context. 

Returning EINVAL when argc > 8 would fix both of these problems.

I wonder if you couldn't somehow macro-ize this to fail at build time if argc was greater than 8?
Comment 3 Rich Felker 2012-06-18 21:41:54 UTC
It's possible to make it fail at compile-time using macros if the function is called directly, but this won't catch all cases, such as calls to makecontext via a function pointer or when the caller prototypes the function without including the header. The test at runtime is really necessary.
Comment 4 Sourceware Commits 2024-01-08 20:09:49 UTC
The master branch has been updated by Adhemerval Zanella <azanella@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=460860f457e2a889785c506e8c77d4a7dff24d3e

commit 460860f457e2a889785c506e8c77d4a7dff24d3e
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Mon Jan 8 10:21:17 2024 -0300

    Remove ia64-linux-gnu
    
    Linux 6.7 removed ia64 from the official tree [1], following the general
    principle that a glibc port needs upstream support for the architecture
    in all the components it depends on (binutils, GCC, and the Linux
    kernel).
    
    Apart from the removal of sysdeps/ia64 and sysdeps/unix/sysv/linux/ia64,
    there are updates to various comments referencing ia64 for which removal
    of those references seemed appropriate. The configuration is removed
    from README and build-many-glibcs.py.
    
    The CONTRIBUTED-BY, elf/elf.h, manual/contrib.texi (the porting
    mention), *.po files, config.guess, and longlong.h are not changed.
    
    For Linux it allows cleanup some clone2 support on multiple files.
    
    The following bug can be closed as WONTFIX: BZ 22634 [2], BZ 14250 [3],
    BZ 21634 [4], BZ 10163 [5], BZ 16401 [6], and BZ 11585 [7].
    
    [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43ff221426d33db909f7159fdf620c3b052e2d1c
    [2] https://sourceware.org/bugzilla/show_bug.cgi?id=22634
    [3] https://sourceware.org/bugzilla/show_bug.cgi?id=14250
    [4] https://sourceware.org/bugzilla/show_bug.cgi?id=21634
    [5] https://sourceware.org/bugzilla/show_bug.cgi?id=10163
    [6] https://sourceware.org/bugzilla/show_bug.cgi?id=16401
    [7] https://sourceware.org/bugzilla/show_bug.cgi?id=11585
    Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Comment 5 Adhemerval Zanella 2024-01-09 02:47:53 UTC
Per last comment.