Merge branch 'master' into 'master'

Fix out-of-bounds error in strsignal

See merge request redox-os/relibc!222
This commit is contained in:
jD91mZM2
2019-06-12 09:18:09 +00:00
5 changed files with 33 additions and 1 deletions
+3 -1
View File
@@ -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]
+1
View File
@@ -61,6 +61,7 @@ EXPECT_NAMES=\
string/strstr \
string/strtok \
string/strtok_r \
string/strsignal \
strings \
sys_epoll/epoll \
time/asctime \
+1
View File
@@ -0,0 +1 @@
# strsignal #
+28
View File
@@ -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);
}
}