talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 86a989f286bc2ba952bf50a84615e43e42ccc535
parent e4dffe9a0d1df997c713accd7ae85fcbf8237e1a
Author: Paul <paul@claws-mail.org>
Date:   Sat, 13 Apr 2013 07:54:52 +0100

fix bug #2879, 'Plain text mails treated as encrypted'
patch by Fabian Keil

Diffstat:
Msrc/plugins/pgpinline/pgpinline.c | 22+++++++++++++++++++---
1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/src/plugins/pgpinline/pgpinline.c b/src/plugins/pgpinline/pgpinline.c @@ -173,6 +173,22 @@ static gchar *get_part_as_string(MimeInfo *mimeinfo) return textdata; } +static gchar *pgpinline_locate_armor_header(gchar *textdata, const gchar *armor_header) +{ + gchar *pos; + + pos = strstr(textdata, armor_header); + /* + * It's only a valid armor header if it's at the + * beginning of the buffer or a new line. + */ + if (pos != NULL && (pos == textdata || *(pos-1) == '\n')) + { + return pos; + } + return NULL; +} + static gboolean pgpinline_is_signed(MimeInfo *mimeinfo) { PrivacyDataPGP *data = NULL; @@ -364,7 +380,7 @@ static gboolean pgpinline_is_encrypted(MimeInfo *mimeinfo) if (!textdata) return FALSE; - if (!strstr(textdata, enc_indicator)) { + if (!pgpinline_locate_armor_header(textdata, enc_indicator)) { g_free(textdata); return FALSE; } @@ -456,7 +472,7 @@ static MimeInfo *pgpinline_decrypt(MimeInfo *mimeinfo) } /* Store any part before encrypted text */ - pos = strstr(textdata, begin_indicator); + pos = pgpinline_locate_armor_header(textdata, begin_indicator); if (pos != NULL && (pos - textdata) > 0) { if (fwrite(textdata, 1, pos - textdata, dstfp) < pos - textdata) { FILE_OP_ERROR(fname, "fwrite"); @@ -491,7 +507,7 @@ static MimeInfo *pgpinline_decrypt(MimeInfo *mimeinfo) goto FILE_ERROR; } if (pos != NULL) { - pos = strstr(pos, end_indicator); + pos = pgpinline_locate_armor_header(pos, end_indicator); if (pos != NULL && *pos != '\0') { pos += strlen(end_indicator); if (fwrite(pos, 1, strlen(pos), dstfp) < strlen(pos)) {