]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
trace: Only permit explicit prefix matching for functions
authorBenjamin Berg <benjamin.berg@intel.com>
Fri, 14 Jun 2024 08:13:50 +0000 (10:13 +0200)
committerJouni Malinen <j@w1.fi>
Thu, 11 Jul 2024 16:54:50 +0000 (19:54 +0300)
The matching code currently only tests whether the prefix of a function
matches. Make this more strict by ensuring that the function name is not
longer.

However, as this breaks some tests (due to inlining), add the ability to
do an explicit prefix match by appending a '*' to the function name. Use
this to change the eap_eke_prf match to eap_eke_prf_* in order to match
one of the actual implementations.

Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
src/utils/os_unix.c
tests/hwsim/test_eap_proto.py

index b665c79a2528cc18bb7764f3d49c7116b04f3b15..679f3a0dccf830d798e64d8e01912b0b25cf1765 100644 (file)
@@ -598,6 +598,7 @@ int testing_test_fail(const char *tag, bool is_alloc)
        while (i < res) {
                int allow_skip = 1;
                int maybe = 0;
+               bool prefix = false;
 
                if (*pos == '=') {
                        allow_skip = 0;
@@ -611,7 +612,12 @@ int testing_test_fail(const char *tag, bool is_alloc)
                        len = next - pos;
                else
                        len = os_strlen(pos);
-               if (os_strncmp(pos, func[i], len) != 0) {
+               if (len >= 1 && pos[len - 1] == '*') {
+                       prefix = true;
+                       len -= 1;
+               }
+               if (os_strncmp(pos, func[i], len) != 0 ||
+                   (!prefix && func[i][len] != '\0')) {
                        if (maybe && next) {
                                pos = next + 1;
                                continue;
index 50d898a1843ee2657a8e287d4b87d55bdc0c37b3..22e1b979cfb99b8b8efeb54f7f4ebc1db44af3c3 100644 (file)
@@ -2895,7 +2895,7 @@ def test_eap_proto_eke_errors(dev, apdev):
     tests = [(1, "eap_eke_dh_init", None),
              (1, "eap_eke_prf_hmac_sha1", "dhgroup=3 encr=1 prf=1 mac=1"),
              (1, "eap_eke_prf_hmac_sha256", "dhgroup=5 encr=1 prf=2 mac=2"),
-             (1, "eap_eke_prf", None),
+             (1, "eap_eke_prf_*", None),
              (1, "os_get_random;eap_eke_dhcomp", None),
              (1, "aes_128_cbc_encrypt;eap_eke_dhcomp", None),
              (1, "aes_128_cbc_decrypt;eap_eke_shared_secret", None),