提交 3fb2c3e4 编写于 作者: M Matt Caswell

Fix some undefined behaviour in stack test

At one point the stack was passing a pointer of the element *before* an
array which is undefined.
Reviewed-by: NRich Salz <rsalz@openssl.org>
Reviewed-by: NRichard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2971)
上级 508ee8f5
......@@ -57,6 +57,7 @@ static int int_compare(const int *const *a, const int *const *b)
static int test_int_stack(void)
{
static int v[] = { 1, 2, -4, 16, 999, 1, -173, 1, 9 };
static int notpresent = -1;
const int n = OSSL_NELEM(v);
static struct {
int value;
......@@ -108,18 +109,26 @@ static int test_int_stack(void)
}
/* find unsorted -- the pointers are compared */
for (i = 0; i < n_finds; i++)
if (sk_sint_find(s, v + finds[i].unsorted) != finds[i].unsorted) {
for (i = 0; i < n_finds; i++) {
int *val = (finds[i].unsorted == -1) ? &notpresent
: v + finds[i].unsorted;
if (sk_sint_find(s, val) != finds[i].unsorted) {
fprintf(stderr, "test int unsorted find %d\n", i);
goto end;
}
}
/* find_ex unsorted */
for (i = 0; i < n_finds; i++)
if (sk_sint_find_ex(s, v + finds[i].unsorted) != finds[i].unsorted) {
for (i = 0; i < n_finds; i++) {
int *val = (finds[i].unsorted == -1) ? &notpresent
: v + finds[i].unsorted;
if (sk_sint_find_ex(s, val) != finds[i].unsorted) {
fprintf(stderr, "test int unsorted find_ex %d\n", i);
goto end;
}
}
/* sorting */
if (sk_sint_is_sorted(s)) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册