git-svn-id: file:///var/lib/svn/clamav-devel/trunk/clamav-devel@585 77e5149b-7576-45b1-b177-96237e5ba77b
Tomasz Kojm authored on 2004/05/30 10:42:19... | ... |
@@ -75,6 +75,7 @@ Jens Elkner <elkner*linofee.org> |
75 | 75 |
Jason Englander <jason*englanders.cc> |
76 | 76 |
Tony Finch <dot*dotat.at> |
77 | 77 |
David Ford <david+cert*blue-labs.org> |
78 |
+Dean Gaudet <dean-clamav*arctic.org> |
|
78 | 79 |
Michel Gaudet <Michel.Gaudet*ehess.fr> |
79 | 80 |
Philippe Gay <ph.gay*free.fr> |
80 | 81 |
Luca 'NERvOus' Gibelli <nervous*clamav.net> |
... | ... |
@@ -1,3 +1,8 @@ |
1 |
+Sun May 30 03:35:38 CEST 2004 (tk) |
|
2 |
+---------------------------------- |
|
3 |
+ * libclamav: cli_findpos: do not use modulo inside the loop; inline |
|
4 |
+ (patch from Dean Gaudet <dean-clamav*arctic.org>) |
|
5 |
+ |
|
1 | 6 |
Sun May 30 01:38:43 CEST 2004 (tk) |
2 | 7 |
---------------------------------- |
3 | 8 |
* libclamav: scanners: enable PowerPoint code (Trog) |
... | ... |
@@ -193,6 +193,32 @@ void cl_freetrie(struct cl_node *root) |
193 | 193 |
free(root); |
194 | 194 |
} |
195 | 195 |
|
196 |
+int inline cli_findpos(const char *buffer, int offset, int length, const struct cli_patt *pattern) |
|
197 |
+{ |
|
198 |
+ int bufferpos = offset + CL_MIN_LENGTH; |
|
199 |
+ int postfixend = offset + length; |
|
200 |
+ unsigned int i; |
|
201 |
+ |
|
202 |
+ if (bufferpos >= length) |
|
203 |
+ bufferpos %= length; |
|
204 |
+ |
|
205 |
+ for(i = CL_MIN_LENGTH; i < pattern->length; i++) { |
|
206 |
+ |
|
207 |
+ if(bufferpos == postfixend) |
|
208 |
+ return 0; |
|
209 |
+ |
|
210 |
+ if(pattern->pattern[i] != CLI_IGN && (char) pattern->pattern[i] != buffer[bufferpos]) |
|
211 |
+ return 0; |
|
212 |
+ |
|
213 |
+ bufferpos++; |
|
214 |
+ |
|
215 |
+ if (bufferpos == length) |
|
216 |
+ bufferpos = 0; |
|
217 |
+ } |
|
218 |
+ |
|
219 |
+ return 1; |
|
220 |
+} |
|
221 |
+ |
|
196 | 222 |
int cli_scanbuff(const char *buffer, unsigned int length, const char **virname, const struct cl_node *root, int *partcnt) |
197 | 223 |
{ |
198 | 224 |
struct cl_node *current; |
... | ... |
@@ -257,26 +283,3 @@ int cl_scanbuff(const char *buffer, unsigned int length, const char **virname, c |
257 | 257 |
free(partcnt); |
258 | 258 |
return ret; |
259 | 259 |
} |
260 |
- |
|
261 |
-int cli_findpos(const char *buffer, int offset, int length, const struct cli_patt *pattern) |
|
262 |
-{ |
|
263 |
- int bufferpos = offset + CL_MIN_LENGTH; |
|
264 |
- int postfixend = offset + length; |
|
265 |
- unsigned int i; |
|
266 |
- |
|
267 |
- |
|
268 |
- for(i = CL_MIN_LENGTH; i < pattern->length; i++) { |
|
269 |
- |
|
270 |
- bufferpos %= length; |
|
271 |
- |
|
272 |
- if(bufferpos == postfixend) |
|
273 |
- return 0; |
|
274 |
- |
|
275 |
- if(pattern->pattern[i] != CLI_IGN && (char) pattern->pattern[i] != buffer[bufferpos]) |
|
276 |
- return 0; |
|
277 |
- |
|
278 |
- bufferpos++; |
|
279 |
- } |
|
280 |
- |
|
281 |
- return 1; |
|
282 |
-} |