1 /* Copyright (C) 2009 Trend Micro Inc.
4 * This program is a free software; you can redistribute it
5 * and/or modify it under the terms of the GNU General Public
6 * License (version 2) as published by the FSF - Free Software
16 /* Compare an already compiled pattern with a not NULL string.
17 * Returns 1 on success or 0 on error.
18 * The error code is set on reg->error.
20 int OSMatch_Execute(const char *str, size_t str_len, OSMatch *reg)
22 return reg->exec_function(str, str_len, reg);
25 int OSMatch_Execute_true(const char *subject, size_t len, OSMatch *match)
33 int OSMatch_Execute_pcre2_match(const char *str, size_t str_len, OSMatch * reg)
38 rc = pcre2_jit_match(reg->regex, (PCRE2_SPTR)str, str_len, 0, 0, reg->match_data, NULL);
40 rc = pcre2_match(reg->regex, (PCRE2_SPTR)str, str_len, 0, 0, reg->match_data, NULL);
46 int OSMatch_Execute_strcmp(const char *subject, size_t len, OSMatch *match)
50 return !strcmp(match->pattern, subject);
53 int OSMatch_Execute_strncmp(const char *subject, size_t len, OSMatch *match)
57 return !strncmp(match->pattern, subject, match->pattern_len);
60 int OSMatch_Execute_strrcmp(const char *subject, size_t len, OSMatch *match)
63 if (len >= match->pattern_len) {
64 return !strcmp(match->pattern, &subject[len - match->pattern_len]);
69 int OSMatch_Execute_strcasecmp(const char *subject, size_t len, OSMatch *match)
71 return (len == match->pattern_len && !strcasecmp(match->pattern, subject));
74 int OSMatch_Execute_strncasecmp(const char *subject, size_t len, OSMatch *match)
77 return !strncasecmp(match->pattern, subject, match->pattern_len);
80 int OSMatch_Execute_strrcasecmp(const char *subject, size_t len, OSMatch *match) {
81 if (len >= match->pattern_len) {
82 return !strcasecmp(match->pattern, &subject[len - match->pattern_len]);