X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Fbmi_spam.c;h=6651de5ad7d195a9d5ee0212fa976750bf4a3ff5;hb=11ce40d8d043155bc87a5f564c9064e06fc4f184;hp=546ac1e36837963c173d8e1618ec09973352ba38;hpb=d5b80e59458182b2d557a929a18cb8c70cd56b68;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/bmi_spam.c b/src/src/bmi_spam.c index 546ac1e36..6651de5ad 100644 --- a/src/src/bmi_spam.c +++ b/src/src/bmi_spam.c @@ -190,8 +190,10 @@ uschar *bmi_process_message(header_line *header_list, int data_fd) { return NULL; }; - /* get store for the verdict string */ - verdicts = store_get(1); + /* Get store for the verdict string. Since we are processing message data, assume that + the verdict is tainted. XXX this should use a growable-string */ + + verdicts = store_get(1, TRUE); *verdicts = '\0'; for ( err = bmiAccessFirstVerdict(message, &verdict); @@ -200,7 +202,8 @@ uschar *bmi_process_message(header_line *header_list, int data_fd) { char *verdict_str; err = bmiCreateStrFromVerdict(verdict,&verdict_str); - if (!store_extend(verdicts, Ustrlen(verdicts)+1, Ustrlen(verdicts)+1+strlen(verdict_str)+1)) { + if (!store_extend(verdicts, TRUE, + Ustrlen(verdicts)+1, Ustrlen(verdicts)+1+strlen(verdict_str)+1)) { /* can't allocate more store */ return NULL; }; @@ -299,7 +302,7 @@ uschar *bmi_get_alt_location(uschar *base64_verdict) { } else { /* deliver to alternate location */ - rc = store_get(strlen(bmiVerdictAccessDestination(verdict))+1); + rc = store_get(strlen(bmiVerdictAccessDestination(verdict))+1, TRUE); Ustrcpy(rc, bmiVerdictAccessDestination(verdict)); rc[strlen(bmiVerdictAccessDestination(verdict))] = '\0'; }; @@ -324,7 +327,7 @@ uschar *bmi_get_base64_verdict(uschar *bmi_local_part, uschar *bmi_domain) { return NULL; /* allocate room for the b64 verdict string */ - verdict_buffer = store_get(Ustrlen(bmi_verdicts)+1); + verdict_buffer = store_get(Ustrlen(bmi_verdicts)+1, TRUE); /* loop through verdicts */ verdict_ptr = bmi_verdicts;