git-svn: trunk@4991
aCaB authored on 2009/03/30 21:24:27... | ... |
@@ -1,3 +1,7 @@ |
1 |
+Mon Mar 30 14:02:03 CEST 2009 (acab) |
|
2 |
+------------------------------------ |
|
3 |
+ * clamav-milter/clamfi.c: fix null dereference when LogInfected=Full (bb#1522) |
|
4 |
+ |
|
1 | 5 |
Sun Mar 29 13:38:43 CEST 2009 (acab) |
2 | 6 |
------------------------------------ |
3 | 7 |
* shared/actions.c: fix logic in --move (bb#1517) |
... | ... |
@@ -61,6 +61,7 @@ enum { |
61 | 61 |
} loginfected; |
62 | 62 |
|
63 | 63 |
#define CLAMFIBUFSZ 1424 |
64 |
+static const char *HDR_UNAVAIL = "UNKNOWN"; |
|
64 | 65 |
|
65 | 66 |
struct CLAMFI { |
66 | 67 |
char buffer[CLAMFIBUFSZ]; |
... | ... |
@@ -91,12 +92,15 @@ enum CFWHAT { |
91 | 91 |
}; |
92 | 92 |
|
93 | 93 |
|
94 |
-static void makesanehdr(char *hdr) { |
|
94 |
+static const char *makesanehdr(char *hdr) { |
|
95 |
+ char *ret = hdr; |
|
96 |
+ if(!hdr) return HDR_UNAVAIL; |
|
95 | 97 |
while(*hdr) { |
96 | 98 |
if(*hdr=='\'' || *hdr=='\t' || *hdr=='\r' || *hdr=='\n' || !isprint(*hdr)) |
97 | 99 |
*hdr = ' '; |
98 | 100 |
hdr++; |
99 | 101 |
} |
102 |
+ return ret; |
|
100 | 103 |
} |
101 | 104 |
|
102 | 105 |
static void nullify(SMFICTX *ctx, struct CLAMFI *cf, enum CFWHAT closewhat) { |
... | ... |
@@ -287,18 +291,19 @@ sfsistat clamfi_eom(SMFICTX *ctx) { |
287 | 287 |
} |
288 | 288 |
|
289 | 289 |
if(loginfected) { |
290 |
- const char *from = smfi_getsymval(ctx, "{mail_addr}"), *to = smfi_getsymval(ctx, "{rcpt_addr}"); |
|
291 |
- |
|
292 |
- if(!from) from = "UNKNOWN"; |
|
293 |
- if(!to) to = "UNKNOWN"; |
|
294 |
- |
|
290 |
+ const char *from = smfi_getsymval(ctx, "{mail_addr}"); |
|
291 |
+ const char *to = smfi_getsymval(ctx, "{rcpt_addr}"); |
|
292 |
+ |
|
293 |
+ if(!from) from = HDR_UNAVAIL; |
|
294 |
+ if(!to) to = HDR_UNAVAIL; |
|
295 | 295 |
if(loginfected == LOGINF_FULL) { |
296 | 296 |
const char *id = smfi_getsymval(ctx, "{i}"); |
297 |
+ const char *msg_subj = makesanehdr(cf->msg_subj); |
|
298 |
+ const char *msg_date = makesanehdr(cf->msg_date); |
|
299 |
+ const char *msg_id = makesanehdr(cf->msg_id); |
|
297 | 300 |
|
298 |
- makesanehdr(cf->msg_subj); |
|
299 |
- makesanehdr(cf->msg_date); |
|
300 |
- makesanehdr(cf->msg_id); |
|
301 |
- logg("~Message %s from <%s> to <%s> with subject '%s' message-id '%s' date '%s' infected by %s\n", id ? id : "UNKNOWN", from, to, cf->msg_subj, cf->msg_id, cf->msg_date, vir); |
|
301 |
+ if(!id) id = HDR_UNAVAIL; |
|
302 |
+ logg("~Message %s from <%s> to <%s> with subject '%s' message-id '%s' date '%s' infected by %s\n", id, from, to, msg_subj, msg_id, msg_date, vir); |
|
302 | 303 |
} else logg("~Message from <%s> to <%s> infected by %s\n", from, to, vir); |
303 | 304 |
} |
304 | 305 |
} |