[PATCH 1/1] libc: Added implementation for sig2str/str2sig.
Corinna Vinschen
vinschen@redhat.com
Mon Aug 2 11:48:04 GMT 2021
Hi Matt,
a collegue of mine pointed out that it might be good idea to be more
paranoid in terms of the output string size:
On Jul 31 15:22, Matt Joyce wrote:
> +sig2str(int signum, char *str)
> +{
> + const sig_name_and_num *sptr;
> +
> + /* If signum falls in lower half of the real time signals range, define
> + * the saved str value as "RTMIN+n" according to the Issue 8 standard */
> + if ((SIGRTMIN + 1) <= signum &&
> + signum <= (SIGRTMIN + SIGRTMAX) / 2) {
> + sprintf(str, "RTMIN+%d", (signum-SIGRTMIN));
snprintf(str, SIG2STR_MAX, "RTMIN+%d", (signum-SIGRTMIN));
> + return 0;
> + }
> +
> + /* If signum falls in upper half of the real time signals range, define
> + * the saved str value as "RTMAX-m" according to the Issue 8 standard */
> + if ((((SIGRTMIN + SIGRTMAX) / 2) + 1) <= signum &&
> + signum <= (SIGRTMAX - 1)) {
> + sprintf(str, "RTMAX-%d", (SIGRTMAX - signum));
snprintf(str, SIG2STR_MAX, "RTMAX+%d", (signum-SIGRTMIN));
> + return 0;
> + }
> +
> + /* Otherwise, search for signal matching signum in sig_array. If found,
> + * save its string value in str. */
> + for (sptr = sig_array; sptr < &sig_array[NUM_OF_SIGS]; sptr++) {
> + if (sptr->sig_num == signum) {
> + strcpy(str, sptr->sig_name);
strlcpy(str, sptr->sig_name, SIG2STR_MAX);
What do you think?
Corinna
More information about the Newlib
mailing list