Skip to content

Commit

Permalink
perf: use ncase memem
Browse files Browse the repository at this point in the history
Signed-off-by: Zxilly <[email protected]>
  • Loading branch information
Zxilly committed May 9, 2021
1 parent 0db67ae commit bae547d
Showing 1 changed file with 30 additions and 3 deletions.
33 changes: 30 additions & 3 deletions src/ua2f.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,33 @@ char *str = NULL;

static struct ipset *Pipset;

void *memncasemem(const void *l, size_t l_len, const void *s, size_t s_len) {
register char *cur, *last;
const char *cl = (const char *) l;
const char *cs = (const char *) s;

/* we need something to compare */
if (l_len == 0 || s_len == 0)
return NULL;

/* "s" must be smaller or equal to "l" */
if (l_len < s_len)
return NULL;

/* special case where s_len == 1 */
if (s_len == 1)
return memchr(l, (int) *cs, l_len);

/* the last position where its possible to find "s" in "l" */
last = (char *) cl + l_len - s_len;

for (cur = (char *) cl; cur <= last; cur++)
if (cur[0] == cs[0] && strncasecmp(cur, cs, s_len) == 0)
return cur;

return NULL;
}

static char *time2str(int sec) {
memset(timestr, 0, sizeof(timestr));
if (sec <= 60) {
Expand Down Expand Up @@ -258,15 +285,15 @@ static int queue_cb(const struct nlmsghdr *nlh, void *data) {
tcppklen = nfq_tcp_get_payload_len(tcppkhdl, pktb); //获取 tcp长度

if (tcppkpayload) {
char *uapointer = memmem(tcppkpayload, tcppklen, "\r\nUser", 6);
if (uapointer) {
char *uapointer = memncasemem(tcppkpayload, tcppklen, "\r\nUser-Agent:", 13);
/* if (uapointer) {
uapointer = memmem(tcppkpayload, tcppklen, "\r\nUser-Agent:", 13);
if (!uapointer) {
uapointer = memmem(tcppkpayload, tcppklen, "\r\nUser-agent:", 13);
}
} else {
uapointer = memmem(tcppkpayload, tcppklen, "\r\nuser-agent:", 13);
}
}*/

if (uapointer) {
uaoffset = uapointer - tcppkpayload + 14;
Expand Down

0 comments on commit bae547d

Please sign in to comment.