cli_findpos() speedup

git-svn: trunk@585
remotes/push_mirror/metadata
Tomasz Kojm 22 years ago
parent c240c32c1f
commit fc8e8ca2e5
  1. 1
      clamav-devel/AUTHORS
  2. 5
      clamav-devel/ChangeLog
  3. 49
      clamav-devel/libclamav/matcher.c

@ -75,6 +75,7 @@ Jens Elkner <elkner*linofee.org>
Jason Englander <jason*englanders.cc>
Tony Finch <dot*dotat.at>
David Ford <david+cert*blue-labs.org>
Dean Gaudet <dean-clamav*arctic.org>
Michel Gaudet <Michel.Gaudet*ehess.fr>
Philippe Gay <ph.gay*free.fr>
Luca 'NERvOus' Gibelli <nervous*clamav.net>

@ -1,3 +1,8 @@
Sun May 30 03:35:38 CEST 2004 (tk)
----------------------------------
* libclamav: cli_findpos: do not use modulo inside the loop; inline
(patch from Dean Gaudet <dean-clamav*arctic.org>)
Sun May 30 01:38:43 CEST 2004 (tk)
----------------------------------
* libclamav: scanners: enable PowerPoint code (Trog)

@ -193,6 +193,32 @@ void cl_freetrie(struct cl_node *root)
free(root);
}
int inline cli_findpos(const char *buffer, int offset, int length, const struct cli_patt *pattern)
{
int bufferpos = offset + CL_MIN_LENGTH;
int postfixend = offset + length;
unsigned int i;
if (bufferpos >= length)
bufferpos %= length;
for(i = CL_MIN_LENGTH; i < pattern->length; i++) {
if(bufferpos == postfixend)
return 0;
if(pattern->pattern[i] != CLI_IGN && (char) pattern->pattern[i] != buffer[bufferpos])
return 0;
bufferpos++;
if (bufferpos == length)
bufferpos = 0;
}
return 1;
}
int cli_scanbuff(const char *buffer, unsigned int length, const char **virname, const struct cl_node *root, int *partcnt)
{
struct cl_node *current;
@ -257,26 +283,3 @@ int cl_scanbuff(const char *buffer, unsigned int length, const char **virname, c
free(partcnt);
return ret;
}
int cli_findpos(const char *buffer, int offset, int length, const struct cli_patt *pattern)
{
int bufferpos = offset + CL_MIN_LENGTH;
int postfixend = offset + length;
unsigned int i;
for(i = CL_MIN_LENGTH; i < pattern->length; i++) {
bufferpos %= length;
if(bufferpos == postfixend)
return 0;
if(pattern->pattern[i] != CLI_IGN && (char) pattern->pattern[i] != buffer[bufferpos])
return 0;
bufferpos++;
}
return 1;
}

Loading…
Cancel
Save