]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Use memory safe functions when searching for needles
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Wed, 27 Nov 2024 23:08:37 +0000 (17:08 -0600)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Wed, 27 Nov 2024 23:41:50 +0000 (17:41 -0600)
Probably slightly higher performance

src/lib/util/sbuff.c

index b7531e095eae6a70e89b31d348afaebc4820e735..fef844ed1e020ed1174dd620109032d183b2aa83 100644 (file)
@@ -560,14 +560,14 @@ static inline bool fr_sbuff_terminal_search(fr_sbuff_t *in, char const *p,
        mid = term_idx - 1;                             /* Inform the mid point from the index */
 
        while (start <= end) {
-               char const      *elem;
-               size_t          tlen;
-               int             ret;
+               fr_sbuff_term_elem_t const      *elem;
+               size_t                          tlen;
+               int                             ret;
 
-               elem = term->elem[mid].str;
-               tlen = strlen(elem);
+               elem = &term->elem[mid];
+               tlen = elem->len;
 
-               ret = strncmp(p, elem, tlen < (size_t)remaining ? tlen : (size_t)remaining);
+               ret = memcmp(p, elem->str, tlen < (size_t)remaining ? tlen : (size_t)remaining);
                if (ret == 0) {
                        /*
                         *      If we have more text than the table element, that's fine