X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fsend.c;h=d47ba8eaa473afee8336faefb630fe5355d9b263;hp=ec9b76db4ca6bba70cecd4eb09c63b6607a7f534;hb=10eff860a28b96582526eb739fd0a55441669938;hpb=cf1205b5cbea2f0cd6ea710ec16c637df85b647c diff --git a/uip/send.c b/uip/send.c index ec9b76d..d47ba8e 100644 --- a/uip/send.c +++ b/uip/send.c @@ -320,13 +320,26 @@ sendsbr(char **vec, int vecp, char *drft, struct stat *st) } static int +contains_non_ascii(char *str) +{ + unsigned char *cp; + + for (cp = str; *cp; cp++) { + if (*cp > 127) { + return 1; + } + } + return 0; +} + +static int attach(char *draft_file_name) { char buf[MAXPATHLEN + 6]; int c; int has_attachment; - int has_body; - int non_ascii; /* msg body contains non-ASCII chars */ + int has_body = 0; + int non_ascii = 0; /* msg body or hdr contains non-ASCII chars */ int length; /* length of attachment header field name */ char *p; @@ -335,7 +348,7 @@ attach(char *draft_file_name) } /* We'll grow the buffer as needed. */ - field = (char *)mh_xmalloc(field_size = 256); + field = (char *)mh_xcalloc(field_size = 256, sizeof(char)); /* ** Scan the draft file for an attachment header field name. @@ -347,6 +360,9 @@ attach(char *draft_file_name) field[length] == ':') { has_attachment = 1; } + if (contains_non_ascii(field)) { + non_ascii = 1; + } } /* @@ -355,16 +371,14 @@ attach(char *draft_file_name) ** Check if body contains at least one non-blank (= not empty) ** and if it contains any non-ASCII chars (= need MIME). */ - has_body = 0; - non_ascii = 0; while (get_line() != EOF) { - for (p = field; *p != '\0'; p++) { - if (*p != ' ' && *p != '\t') { + if (contains_non_ascii(field)) { + non_ascii = 1; + } + for (p = field; *p; p++) { + if (isgraph(*p)) { has_body = 1; } - if (*p > 127 || *p < 0) { - non_ascii = 1; - } } if (has_body && non_ascii) { break; /* that's been already enough information */ @@ -470,7 +484,7 @@ signandenc(char *draft_file_name) } /* We'll grow the buffer as needed. */ - field = (char *)mh_xmalloc(field_size = 256); + field = (char *)mh_xcalloc(field_size = 256, sizeof(char)); /* Scan the draft file for an attachment header field name. */ while (get_line() != EOF && *field != '\0' && *field != '-') {