Skip to content
Snippets Groups Projects
Commit a5409ecd authored by Jason Hansel's avatar Jason Hansel
Browse files

Fix out-of-bounds error in strsignal

parent dab6530f
No related branches found
No related tags found
1 merge request!222Fix out-of-bounds error in strsignal
......@@ -366,7 +366,9 @@ pub unsafe extern "C" fn strrchr(s: *const c_char, c: c_int) -> *mut c_char {
#[no_mangle]
pub unsafe extern "C" fn strsignal(sig: c_int) -> *const c_char {
signal::_signal_strings[sig as usize].as_ptr() as *const c_char
signal::_signal_strings.get(sig as usize).unwrap_or(
&signal::_signal_strings[0] // Unknown signal message
).as_ptr() as *const c_char
}
#[no_mangle]
......
......@@ -61,6 +61,7 @@ EXPECT_NAMES=\
string/strstr \
string/strtok \
string/strtok_r \
string/strsignal \
strings \
sys_epoll/epoll \
time/asctime \
......
# strsignal #
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include "test_helpers.h"
int main(void) {
puts("# strsignal #");
char *x = strsignal(SIGHUP);
int res;
if (strcmp(x, "Hangup")) {
printf("Incorrect strsignal (1), found: .%s.\n", x);
exit(EXIT_FAILURE);
}
x = strsignal(0);
if (strcmp(x, "Unknown signal")) {
printf("Incorrect strsignal (2), found: .%s.\n", x);
exit(EXIT_FAILURE);
}
x = strsignal(100);
if (strcmp(x, "Unknown signal")) {
printf("Incorrect strsignal (3), found: .%s.\n", x);
exit(EXIT_FAILURE);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment