git-svn: trunk@2022
Nigel Horne authored on 2006/06/12 22:25:21... | ... |
@@ -16,7 +16,7 @@ |
16 | 16 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
17 | 17 |
* MA 02110-1301, USA. |
18 | 18 |
*/ |
19 |
-static char const rcsid[] = "$Id: message.c,v 1.173 2006/06/11 14:31:40 njh Exp $"; |
|
19 |
+static char const rcsid[] = "$Id: message.c,v 1.174 2006/06/12 13:24:06 njh Exp $"; |
|
20 | 20 |
|
21 | 21 |
#if HAVE_CONFIG_H |
22 | 22 |
#include "clamav-config.h" |
... | ... |
@@ -1032,7 +1032,7 @@ messageExport(message *m, const char *dir, void *(*create)(void), void (*destroy |
1032 | 1032 |
|
1033 | 1033 |
if((t_line = binhexBegin(m)) != NULL) { |
1034 | 1034 |
unsigned char byte; |
1035 |
- unsigned long newlen = 0L, len, l; |
|
1035 |
+ unsigned long newlen = 0L, len, dataforklen, resourceforklen, l; |
|
1036 | 1036 |
unsigned char *data; |
1037 | 1037 |
char *ptr; |
1038 | 1038 |
int bytenumber; |
... | ... |
@@ -1267,13 +1267,18 @@ messageExport(message *m, const char *dir, void *(*create)(void), void (*destroy |
1267 | 1267 |
/* |
1268 | 1268 |
* Set len to be the data fork length |
1269 | 1269 |
*/ |
1270 |
- len = ((data[byte] << 24) & 0xFF000000) | |
|
1270 |
+ dataforklen = ((data[byte] << 24) & 0xFF000000) | |
|
1271 | 1271 |
((data[byte + 1] << 16) & 0xFF0000) | |
1272 | 1272 |
((data[byte + 2] << 8) & 0xFF00) | |
1273 | 1273 |
(data[byte + 3] & 0xFF); |
1274 | 1274 |
|
1275 |
- cli_dbgmsg("Filename = '%s', data fork length = %lu bytes\n", |
|
1276 |
- filename, len); |
|
1275 |
+ resourceforklen = ((data[byte + 4] << 24) & 0xFF000000) | |
|
1276 |
+ ((data[byte + 5] << 16) & 0xFF0000) | |
|
1277 |
+ ((data[byte + 6] << 8) & 0xFF00) | |
|
1278 |
+ (data[byte + 7] & 0xFF); |
|
1279 |
+ |
|
1280 |
+ cli_dbgmsg("Filename = '%s', data fork length = %lu, resource fork length = %lu bytes\n", |
|
1281 |
+ filename, dataforklen, resourceforklen); |
|
1277 | 1282 |
|
1278 | 1283 |
free((char *)filename); |
1279 | 1284 |
|
... | ... |
@@ -1284,15 +1289,15 @@ messageExport(message *m, const char *dir, void *(*create)(void), void (*destroy |
1284 | 1284 |
|
1285 | 1285 |
l = blobGetDataSize(tmp) - byte; |
1286 | 1286 |
|
1287 |
- if(l < len) { |
|
1287 |
+ if(l < dataforklen) { |
|
1288 | 1288 |
cli_warnmsg("Corrupt BinHex file, claims it is %lu bytes long in a message of %lu bytes\n", |
1289 |
- len, l); |
|
1290 |
- len = l; |
|
1289 |
+ dataforklen, l); |
|
1290 |
+ dataforklen = l; |
|
1291 | 1291 |
} |
1292 | 1292 |
if(setCTX && m->ctx) |
1293 | 1293 |
(*setCTX)(ret, m->ctx); |
1294 | 1294 |
|
1295 |
- (*addData)(ret, &data[byte], len); |
|
1295 |
+ (*addData)(ret, &data[byte], dataforklen); |
|
1296 | 1296 |
|
1297 | 1297 |
blobDestroy(tmp); |
1298 | 1298 |
|