| ... | ... |
@@ -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 |
} |