
Some checks failed
CIFuzz / Fuzzing (push) Waiting to run
C/C++ CI self-hosted / win10 cygwin-release (push) Waiting to run
C/C++ CI self-hosted / ARM default (push) Waiting to run
C/C++ CI self-hosted / ARM64 default (push) Waiting to run
C/C++ CI self-hosted / alpine default (push) Waiting to run
C/C++ CI self-hosted / centos7 default (push) Waiting to run
C/C++ CI self-hosted / debian-i386 default (push) Waiting to run
C/C++ CI self-hosted / dfly30 default (push) Waiting to run
C/C++ CI self-hosted / dfly48 default (push) Waiting to run
C/C++ CI self-hosted / dfly60 default (push) Waiting to run
C/C++ CI self-hosted / dfly62 default (push) Waiting to run
C/C++ CI self-hosted / dfly64 default (push) Waiting to run
C/C++ CI self-hosted / fbsd10 default (push) Waiting to run
C/C++ CI self-hosted / fbsd12 default (push) Waiting to run
C/C++ CI self-hosted / fbsd13 default (push) Waiting to run
C/C++ CI self-hosted / fbsd14 default (push) Waiting to run
C/C++ CI self-hosted / nbsd10 default (push) Waiting to run
C/C++ CI self-hosted / nbsd3 default (push) Waiting to run
C/C++ CI self-hosted / nbsd4 default (push) Waiting to run
C/C++ CI self-hosted / nbsd8 default (push) Waiting to run
C/C++ CI self-hosted / nbsd9 default (push) Waiting to run
C/C++ CI self-hosted / obsd51 default (push) Waiting to run
C/C++ CI self-hosted / obsd67 default (push) Waiting to run
C/C++ CI self-hosted / obsd72 default (push) Waiting to run
C/C++ CI self-hosted / obsd73 default (push) Waiting to run
C/C++ CI self-hosted / obsd74 default (push) Waiting to run
C/C++ CI self-hosted / obsdsnap default (push) Waiting to run
C/C++ CI self-hosted / obsdsnap-i386 default (push) Waiting to run
C/C++ CI self-hosted / omnios default (push) Waiting to run
C/C++ CI self-hosted / openindiana default (push) Waiting to run
C/C++ CI self-hosted / ubuntu-2204 default (push) Waiting to run
C/C++ CI self-hosted / obsd-arm64 default (push) Waiting to run
C/C++ CI self-hosted / aix51 default (push) Waiting to run
C/C++ CI self-hosted / fbsd14-ppc64 default (push) Waiting to run
C/C++ CI self-hosted / sol10 default (push) Waiting to run
C/C++ CI self-hosted / sol11 default (push) Waiting to run
C/C++ CI self-hosted / win10 default (push) Waiting to run
C/C++ CI self-hosted / debian-riscv64 default (push) Waiting to run
C/C++ CI self-hosted / openwrt-mips default (push) Waiting to run
C/C++ CI self-hosted / openwrt-mipsel default (push) Waiting to run
C/C++ CI self-hosted / ARM64 pam (push) Waiting to run
C/C++ CI self-hosted / centos7 pam (push) Waiting to run
C/C++ CI self-hosted / debian-i386 pam (push) Waiting to run
C/C++ CI self-hosted / dfly48 pam (push) Waiting to run
C/C++ CI self-hosted / dfly58 pam (push) Waiting to run
C/C++ CI self-hosted / dfly60 pam (push) Waiting to run
C/C++ CI self-hosted / dfly62 pam (push) Waiting to run
C/C++ CI self-hosted / dfly64 pam (push) Waiting to run
C/C++ CI self-hosted / fbsd10 pam (push) Waiting to run
C/C++ CI self-hosted / fbsd12 pam (push) Waiting to run
C/C++ CI self-hosted / fbsd13 pam (push) Waiting to run
C/C++ CI self-hosted / fbsd14 pam (push) Waiting to run
C/C++ CI self-hosted / nbsd10 pam (push) Waiting to run
C/C++ CI self-hosted / nbsd8 pam (push) Waiting to run
C/C++ CI self-hosted / nbsd9 pam (push) Waiting to run
C/C++ CI self-hosted / omnios pam (push) Waiting to run
C/C++ CI self-hosted / openindiana pam (push) Waiting to run
C/C++ CI self-hosted / sol10 pam (push) Waiting to run
C/C++ CI self-hosted / sol11 pam-krb5 (push) Waiting to run
C/C++ CI self-hosted / sol11 sol64 (push) Waiting to run
C/C++ CI self-hosted / dfly30 without-openssl (push) Waiting to run
C/C++ CI / ubuntu-latest aws-lc (push) Failing after 31s
C/C++ CI / ubuntu-latest boringssl (push) Failing after 31s
C/C++ CI / ubuntu-latest clang-15 (push) Failing after 31s
C/C++ CI / ubuntu-latest clang-19 (push) Failing after 19s
C/C++ CI / ubuntu-latest default (push) Failing after 3s
C/C++ CI / ubuntu-latest gcc-14 (push) Failing after 4s
C/C++ CI / ubuntu-latest libressl-3.2.6 (push) Failing after 4s
C/C++ CI / ubuntu-latest libressl-3.3.6 (push) Failing after 3s
C/C++ CI / ubuntu-latest libressl-3.4.3 (push) Failing after 3s
C/C++ CI / ubuntu-latest libressl-3.5.3 (push) Failing after 4s
C/C++ CI / ubuntu-latest libressl-3.6.1 (push) Failing after 4s
C/C++ CI / ubuntu-latest libressl-3.7.2 (push) Failing after 4s
C/C++ CI / ubuntu-latest libressl-3.8.4 (push) Failing after 3s
C/C++ CI / ubuntu-latest libressl-3.9.2 (push) Failing after 3s
C/C++ CI / ubuntu-latest libressl-4.0.0 (push) Failing after 4s
C/C++ CI / ubuntu-latest libressl-master (push) Failing after 4s
C/C++ CI / ubuntu-latest musl (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-1.1.1 (push) Failing after 4s
C/C++ CI / ubuntu-latest openssl-1.1.1_stable (push) Failing after 4s
C/C++ CI / ubuntu-latest openssl-1.1.1t (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-1.1.1w (push) Failing after 4s
C/C++ CI / ubuntu-latest openssl-3.0 (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-3.0.0 (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-3.0.15 (push) Failing after 4s
C/C++ CI / ubuntu-latest openssl-3.1 (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-3.1.0 (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-3.1.7 (push) Failing after 4s
C/C++ CI / ubuntu-latest openssl-3.2 (push) Failing after 4s
C/C++ CI / ubuntu-latest openssl-3.2.3 (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-3.3 (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-3.3.2 (push) Failing after 4s
C/C++ CI / ubuntu-latest openssl-3.4.0 (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-master (push) Failing after 3s
C/C++ CI / ubuntu-latest openssl-noec (push) Failing after 4s
C/C++ CI / ubuntu-latest putty-0.71 (push) Failing after 4s
C/C++ CI / ubuntu-latest putty-0.72 (push) Failing after 3s
C/C++ CI / ubuntu-latest putty-0.73 (push) Failing after 4s
C/C++ CI / ubuntu-latest putty-0.74 (push) Failing after 4s
C/C++ CI / ubuntu-latest putty-0.75 (push) Failing after 3s
C/C++ CI / ubuntu-latest putty-0.76 (push) Failing after 4s
C/C++ CI / ubuntu-latest putty-0.77 (push) Failing after 4s
C/C++ CI / ubuntu-latest putty-0.78 (push) Failing after 3s
C/C++ CI / ubuntu-latest putty-0.79 (push) Failing after 3s
C/C++ CI / ubuntu-latest putty-0.80 (push) Failing after 4s
C/C++ CI / ubuntu-latest putty-0.81 (push) Failing after 4s
C/C++ CI / ubuntu-latest putty-0.82 (push) Failing after 3s
C/C++ CI / ubuntu-latest putty-0.83 (push) Failing after 4s
C/C++ CI / ubuntu-latest putty-snapshot (push) Failing after 4s
C/C++ CI / ubuntu-latest tcmalloc (push) Failing after 3s
C/C++ CI / ubuntu-latest zlib-develop (push) Failing after 3s
C/C++ CI / ubuntu-22.04 c89 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 clang-11 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 clang-12-Werror (push) Has been cancelled
C/C++ CI / ubuntu-22.04 clang-14 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 clang-sanitize-address (push) Has been cancelled
C/C++ CI / ubuntu-22.04 clang-sanitize-undefined (push) Has been cancelled
C/C++ CI / windows-2019 cygwin-release (push) Has been cancelled
C/C++ CI / windows-2022 cygwin-release (push) Has been cancelled
C/C++ CI / macos-13 default (push) Has been cancelled
C/C++ CI / macos-14 default (push) Has been cancelled
C/C++ CI / macos-15 default (push) Has been cancelled
C/C++ CI / ubuntu-22.04 default (push) Has been cancelled
C/C++ CI / ubuntu-22.04-arm default (push) Has been cancelled
C/C++ CI / ubuntu-24.04-arm default (push) Has been cancelled
C/C++ CI / windows-2019 default (push) Has been cancelled
C/C++ CI / windows-2022 default (push) Has been cancelled
C/C++ CI / ubuntu-22.04 gcc-11-Werror (push) Has been cancelled
C/C++ CI / ubuntu-22.04 gcc-12-Werror (push) Has been cancelled
C/C++ CI / ubuntu-22.04 gcc-9 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 gcc-sanitize-address (push) Has been cancelled
C/C++ CI / ubuntu-22.04 gcc-sanitize-undefined (push) Has been cancelled
C/C++ CI / ubuntu-22.04 hardenedmalloc (push) Has been cancelled
C/C++ CI / ubuntu-22.04 heimdal (push) Has been cancelled
C/C++ CI / ubuntu-22.04 kitchensink (push) Has been cancelled
C/C++ CI / ubuntu-22.04-arm kitchensink (push) Has been cancelled
C/C++ CI / ubuntu-24.04-arm kitchensink (push) Has been cancelled
C/C++ CI / ubuntu-22.04 krb5 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 libedit (push) Has been cancelled
C/C++ CI / macos-13 pam (push) Has been cancelled
C/C++ CI / macos-14 pam (push) Has been cancelled
C/C++ CI / macos-15 pam (push) Has been cancelled
C/C++ CI / ubuntu-22.04 pam (push) Has been cancelled
C/C++ CI / ubuntu-22.04 selinux (push) Has been cancelled
C/C++ CI / ubuntu-22.04 sk (push) Has been cancelled
C/C++ CI / ubuntu-22.04 valgrind-1 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 valgrind-2 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 valgrind-3 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 valgrind-4 (push) Has been cancelled
C/C++ CI / ubuntu-22.04 valgrind-unit (push) Has been cancelled
C/C++ CI / ubuntu-22.04 without-openssl (push) Has been cancelled
132 lines
5.1 KiB
C
132 lines
5.1 KiB
C
/* $OpenBSD: tests.c,v 1.8 2021/12/14 21:25:27 deraadt Exp $ */
|
|
/*
|
|
* Regress test for matching functions
|
|
*
|
|
* Placed in the public domain
|
|
*/
|
|
|
|
#include "includes.h"
|
|
|
|
#include <sys/types.h>
|
|
#include <stdio.h>
|
|
#ifdef HAVE_STDINT_H
|
|
#include <stdint.h>
|
|
#endif
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#include "../test_helper/test_helper.h"
|
|
|
|
#include "match.h"
|
|
|
|
void
|
|
tests(void)
|
|
{
|
|
TEST_START("match_pattern");
|
|
ASSERT_INT_EQ(match_pattern("", ""), 1);
|
|
ASSERT_INT_EQ(match_pattern("", "aaa"), 0);
|
|
ASSERT_INT_EQ(match_pattern("aaa", ""), 0);
|
|
ASSERT_INT_EQ(match_pattern("aaa", "aaaa"), 0);
|
|
ASSERT_INT_EQ(match_pattern("aaaa", "aaa"), 0);
|
|
TEST_DONE();
|
|
|
|
TEST_START("match_pattern wildcard");
|
|
ASSERT_INT_EQ(match_pattern("", "*"), 1);
|
|
ASSERT_INT_EQ(match_pattern("a", "?"), 1);
|
|
ASSERT_INT_EQ(match_pattern("aa", "a?"), 1);
|
|
ASSERT_INT_EQ(match_pattern("a", "*"), 1);
|
|
ASSERT_INT_EQ(match_pattern("aa", "a*"), 1);
|
|
ASSERT_INT_EQ(match_pattern("aa", "?*"), 1);
|
|
ASSERT_INT_EQ(match_pattern("aa", "**"), 1);
|
|
ASSERT_INT_EQ(match_pattern("aa", "?a"), 1);
|
|
ASSERT_INT_EQ(match_pattern("aa", "*a"), 1);
|
|
ASSERT_INT_EQ(match_pattern("ba", "a?"), 0);
|
|
ASSERT_INT_EQ(match_pattern("ba", "a*"), 0);
|
|
ASSERT_INT_EQ(match_pattern("ab", "?a"), 0);
|
|
ASSERT_INT_EQ(match_pattern("ab", "*a"), 0);
|
|
TEST_DONE();
|
|
|
|
TEST_START("match_pattern_list");
|
|
ASSERT_INT_EQ(match_pattern_list("", "", 0), 0); /* no patterns */
|
|
ASSERT_INT_EQ(match_pattern_list("", "*", 0), 1);
|
|
ASSERT_INT_EQ(match_pattern_list("", "!*", 0), -1);
|
|
ASSERT_INT_EQ(match_pattern_list("", "!a,*", 0), 1);
|
|
ASSERT_INT_EQ(match_pattern_list("", "*,!a", 0), 1);
|
|
ASSERT_INT_EQ(match_pattern_list("", "a,!*", 0), -1);
|
|
ASSERT_INT_EQ(match_pattern_list("", "!*,a", 0), -1);
|
|
ASSERT_INT_EQ(match_pattern_list("a", "", 0), 0);
|
|
ASSERT_INT_EQ(match_pattern_list("a", "*", 0), 1);
|
|
ASSERT_INT_EQ(match_pattern_list("a", "!*", 0), -1);
|
|
ASSERT_INT_EQ(match_pattern_list("a", "!a", 0), -1);
|
|
/* XXX negated ASSERT_INT_EQ(match_pattern_list("a", "!b", 0), 1); */
|
|
ASSERT_INT_EQ(match_pattern_list("a", "!a,*", 0), -1);
|
|
ASSERT_INT_EQ(match_pattern_list("b", "!a,*", 0), 1);
|
|
ASSERT_INT_EQ(match_pattern_list("a", "*,!a", 0), -1);
|
|
ASSERT_INT_EQ(match_pattern_list("b", "*,!a", 0), 1);
|
|
ASSERT_INT_EQ(match_pattern_list("a", "a,!*", 0), -1);
|
|
ASSERT_INT_EQ(match_pattern_list("b", "a,!*", 0), -1);
|
|
ASSERT_INT_EQ(match_pattern_list("a", "a,!a", 0), -1);
|
|
/* XXX negated ASSERT_INT_EQ(match_pattern_list("b", "a,!a", 0), 1); */
|
|
ASSERT_INT_EQ(match_pattern_list("a", "!*,a", 0), -1);
|
|
ASSERT_INT_EQ(match_pattern_list("b", "!*,a", 0), -1);
|
|
TEST_DONE();
|
|
|
|
TEST_START("match_pattern_list lowercase");
|
|
ASSERT_INT_EQ(match_pattern_list("abc", "ABC", 0), 0);
|
|
ASSERT_INT_EQ(match_pattern_list("ABC", "abc", 0), 0);
|
|
ASSERT_INT_EQ(match_pattern_list("abc", "ABC", 1), 1);
|
|
ASSERT_INT_EQ(match_pattern_list("ABC", "abc", 1), 0);
|
|
TEST_DONE();
|
|
|
|
TEST_START("addr_match_list");
|
|
ASSERT_INT_EQ(addr_match_list("127.0.0.1", "127.0.0.1/44"), -2);
|
|
ASSERT_INT_EQ(addr_match_list(NULL, "127.0.0.1/44"), -2);
|
|
ASSERT_INT_EQ(addr_match_list("a", "*"), 0);
|
|
ASSERT_INT_EQ(addr_match_list("127.0.0.1", "*"), 1);
|
|
ASSERT_INT_EQ(addr_match_list(NULL, "*"), 0);
|
|
ASSERT_INT_EQ(addr_match_list("127.0.0.1", "127.0.0.1"), 1);
|
|
ASSERT_INT_EQ(addr_match_list("127.0.0.1", "127.0.0.2"), 0);
|
|
ASSERT_INT_EQ(addr_match_list("127.0.0.1", "!127.0.0.1"), -1);
|
|
/* XXX negated ASSERT_INT_EQ(addr_match_list("127.0.0.1", "!127.0.0.2"), 1); */
|
|
ASSERT_INT_EQ(addr_match_list("127.0.0.255", "127.0.0.0/24"), 1);
|
|
ASSERT_INT_EQ(addr_match_list("127.0.1.1", "127.0.0.0/24"), 0);
|
|
ASSERT_INT_EQ(addr_match_list("127.0.0.1", "127.0.0.0/24"), 1);
|
|
ASSERT_INT_EQ(addr_match_list("127.0.0.1", "127.0.1.0/24"), 0);
|
|
ASSERT_INT_EQ(addr_match_list("127.0.0.1", "!127.0.0.0/24"), -1);
|
|
/* XXX negated ASSERT_INT_EQ(addr_match_list("127.0.0.1", "!127.0.1.0/24"), 1); */
|
|
ASSERT_INT_EQ(addr_match_list("127.0.0.1", "10.0.0.1,!127.0.0.1"), -1);
|
|
ASSERT_INT_EQ(addr_match_list("127.0.0.1", "!127.0.0.1,10.0.0.1"), -1);
|
|
ASSERT_INT_EQ(addr_match_list("127.0.0.1", "10.0.0.1,127.0.0.2"), 0);
|
|
ASSERT_INT_EQ(addr_match_list("127.0.0.1", "127.0.0.2,10.0.0.1"), 0);
|
|
/* XXX negated ASSERT_INT_EQ(addr_match_list("127.0.0.1", "10.0.0.1,!127.0.0.2"), 1); */
|
|
/* XXX negated ASSERT_INT_EQ(addr_match_list("127.0.0.1", "!127.0.0.2,10.0.0.1"), 1); */
|
|
TEST_DONE();
|
|
|
|
#define CHECK_FILTER(string,filter,expected) \
|
|
do { \
|
|
char *result = match_filter_denylist((string), (filter)); \
|
|
ASSERT_STRING_EQ(result, expected); \
|
|
free(result); \
|
|
} while (0)
|
|
|
|
TEST_START("match_filter_list");
|
|
CHECK_FILTER("a,b,c", "", "a,b,c");
|
|
CHECK_FILTER("a,b,c", "a", "b,c");
|
|
CHECK_FILTER("a,b,c", "b", "a,c");
|
|
CHECK_FILTER("a,b,c", "c", "a,b");
|
|
CHECK_FILTER("a,b,c", "a,b", "c");
|
|
CHECK_FILTER("a,b,c", "a,c", "b");
|
|
CHECK_FILTER("a,b,c", "b,c", "a");
|
|
CHECK_FILTER("a,b,c", "a,b,c", "");
|
|
CHECK_FILTER("a,b,c", "b,c", "a");
|
|
CHECK_FILTER("", "a,b,c", "");
|
|
TEST_DONE();
|
|
/*
|
|
* XXX TODO
|
|
* int match_host_and_ip(const char *, const char *, const char *);
|
|
* int match_user(const char *, const char *, const char *, const char *);
|
|
* char *match_list(const char *, const char *, u_int *);
|
|
* int addr_match_cidr_list(const char *, const char *);
|
|
*/
|
|
}
|