sys_signame on macOS contains lower-cases names
This commit is contained in:
@@ -36,6 +36,7 @@
|
|||||||
#ifdef HAVE_STRINGS_H
|
#ifdef HAVE_STRINGS_H
|
||||||
# include <strings.h>
|
# include <strings.h>
|
||||||
#endif /* HAVE_STRINGS_H */
|
#endif /* HAVE_STRINGS_H */
|
||||||
|
#include <ctype.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
@@ -83,6 +84,12 @@ sudo_sig2str(int signo, char *signame)
|
|||||||
#endif
|
#endif
|
||||||
if (signo > 0 && signo < NSIG && sudo_sys_signame[signo] != NULL) {
|
if (signo > 0 && signo < NSIG && sudo_sys_signame[signo] != NULL) {
|
||||||
strlcpy(signame, sudo_sys_signame[signo], SIG2STR_MAX);
|
strlcpy(signame, sudo_sys_signame[signo], SIG2STR_MAX);
|
||||||
|
/* Make sure we always return an upper case signame. */
|
||||||
|
if (islower((unsigned char)signame[0])) {
|
||||||
|
int i;
|
||||||
|
for (i = 0; signame[i] != '\0'; i++)
|
||||||
|
signame[i] = toupper((unsigned char)signame[i]);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
errno = EINVAL;
|
errno = EINVAL;
|
||||||
|
@@ -154,7 +154,8 @@ sudo_str2sig(const char *signame, int *result)
|
|||||||
/* Check sys_signame[]. */
|
/* Check sys_signame[]. */
|
||||||
for (signo = 1; signo < NSIG; signo++) {
|
for (signo = 1; signo < NSIG; signo++) {
|
||||||
if (sudo_sys_signame[signo] != NULL) {
|
if (sudo_sys_signame[signo] != NULL) {
|
||||||
if (strcmp(signame, sudo_sys_signame[signo]) == 0) {
|
/* On macOS sys_signame[] may contain lower-case names. */
|
||||||
|
if (strcasecmp(signame, sudo_sys_signame[signo]) == 0) {
|
||||||
*result = signo;
|
*result = signo;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user