Merge branch 'master' into 'master'
Fix out-of-bounds error in strsignal See merge request redox-os/relibc!222
This commit is contained in:
@@ -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 \
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
# strsignal #
|
||||
@@ -0,0 +1,28 @@
|
||||
#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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user