trace: Only permit explicit prefix matching for functions

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>
This commit is contained in:
Benjamin Berg 2024-06-14 10:13:50 +02:00 committed by Jouni Malinen
parent 49344db095
commit 58b2759551
2 changed files with 8 additions and 2 deletions

View 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;

View 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),