131 lines
4.6 KiB
SYSTEMD
131 lines
4.6 KiB
SYSTEMD
---
|
|
crypt-gpgme.c | 2 +-
|
|
lib.c | 11 +++++++++++
|
|
lib.h | 1 +
|
|
pager.c | 2 +-
|
|
pgp.c | 24 ++++++++++++------------
|
|
5 files changed, 26 insertions(+), 14 deletions(-)
|
|
|
|
--- crypt-gpgme.c
|
|
+++ crypt-gpgme.c 2018-07-17 09:39:04.969728233 +0000
|
|
@@ -2335,7 +2335,7 @@ static void copy_clearsigned (gpgme_data
|
|
|
|
if (armor_header)
|
|
{
|
|
- if (buf[0] == '\n')
|
|
+ if (buf[0] == '\n' || (buf[0] == '\r' && buf[1] == '\n'))
|
|
armor_header = 0;
|
|
continue;
|
|
}
|
|
--- lib.c
|
|
+++ lib.c 2018-07-17 09:39:04.969728233 +0000
|
|
@@ -875,6 +875,17 @@ int mutt_strcmp(const char *a, const cha
|
|
return strcmp(NONULL(a), NONULL(b));
|
|
}
|
|
|
|
+int mutt_strxcmp(const char *a, const char *b)
|
|
+{
|
|
+ const size_t xa = strcspn(NONULL(a), "\r\n");
|
|
+ const size_t xb = strcspn(NONULL(b), "\r\n");
|
|
+ if (xb != xa)
|
|
+ return -1;
|
|
+ if (!xa)
|
|
+ return 0;
|
|
+ return strncmp(NONULL(a), NONULL(b), (size_t)xa);
|
|
+}
|
|
+
|
|
int mutt_strcasecmp(const char *a, const char *b)
|
|
{
|
|
return strcasecmp(NONULL(a), NONULL(b));
|
|
--- lib.h
|
|
+++ lib.h 2018-07-17 09:39:04.969728233 +0000
|
|
@@ -203,6 +203,7 @@ int mutt_copy_bytes (FILE *, FILE *, siz
|
|
int mutt_rx_sanitize_string (char *, size_t, const char *);
|
|
int mutt_strcasecmp (const char *, const char *);
|
|
int mutt_strcmp (const char *, const char *);
|
|
+int mutt_strxcmp(const char *a, const char *b);
|
|
int mutt_strncasecmp (const char *, const char *, size_t);
|
|
int mutt_strncmp (const char *, const char *, size_t);
|
|
int mutt_strcoll (const char *, const char *);
|
|
--- pager.c
|
|
+++ pager.c 2018-07-17 09:39:04.969728233 +0000
|
|
@@ -785,7 +785,7 @@ resolve_types (char *buf, char *raw, str
|
|
else if (check_attachment_marker ((char *) raw) == 0)
|
|
lineInfo[n].type = MT_COLOR_ATTACHMENT;
|
|
#endif
|
|
- else if (mutt_strcmp ("-- \n", buf) == 0 || mutt_strcmp ("-- \r\n", buf) == 0)
|
|
+ else if (mutt_strxcmp ("-- \n", buf) == 0)
|
|
{
|
|
i = n + 1;
|
|
|
|
--- pgp.c
|
|
+++ pgp.c 2018-07-17 09:41:08.907482460 +0000
|
|
@@ -373,7 +373,7 @@ static void pgp_copy_clearsigned (FILE *
|
|
continue;
|
|
}
|
|
|
|
- if (mutt_strcmp (buf, "-----BEGIN PGP SIGNATURE-----\n") == 0)
|
|
+ if (mutt_strxcmp (buf, "-----BEGIN PGP SIGNATURE-----\n") == 0)
|
|
break;
|
|
|
|
if (armor_header)
|
|
@@ -442,14 +442,14 @@ int pgp_application_pgp_handler (BODY *m
|
|
could_not_decrypt = 0;
|
|
decrypt_okay_rc = 0;
|
|
|
|
- if (mutt_strcmp ("MESSAGE-----\n", buf + 15) == 0)
|
|
+ if (mutt_strxcmp ("MESSAGE-----\n", buf + 15) == 0)
|
|
needpass = 1;
|
|
- else if (mutt_strcmp ("SIGNED MESSAGE-----\n", buf + 15) == 0)
|
|
+ else if (mutt_strxcmp ("SIGNED MESSAGE-----\n", buf + 15) == 0)
|
|
{
|
|
clearsign = 1;
|
|
needpass = 0;
|
|
}
|
|
- else if (!mutt_strcmp ("PUBLIC KEY BLOCK-----\n", buf + 15))
|
|
+ else if (!mutt_strxcmp ("PUBLIC KEY BLOCK-----\n", buf + 15))
|
|
{
|
|
needpass = 0;
|
|
pgp_keyblock = 1;
|
|
@@ -482,10 +482,10 @@ int pgp_application_pgp_handler (BODY *m
|
|
|
|
fputs (buf, tmpfp);
|
|
|
|
- if ((needpass && mutt_strcmp ("-----END PGP MESSAGE-----\n", buf) == 0) ||
|
|
+ if ((needpass && mutt_strxcmp ("-----END PGP MESSAGE-----\n", buf) == 0) ||
|
|
(!needpass
|
|
- && (mutt_strcmp ("-----END PGP SIGNATURE-----\n", buf) == 0
|
|
- || mutt_strcmp ("-----END PGP PUBLIC KEY BLOCK-----\n",buf) == 0)))
|
|
+ && (mutt_strxcmp ("-----END PGP SIGNATURE-----\n", buf) == 0
|
|
+ || mutt_strxcmp ("-----END PGP PUBLIC KEY BLOCK-----\n",buf) == 0)))
|
|
break;
|
|
/* remember optional Charset: armor header as defined by RfC4880 */
|
|
if (mutt_strncmp ("Charset: ", buf, 9) == 0)
|
|
@@ -736,11 +736,11 @@ static int pgp_check_traditional_one_bod
|
|
{
|
|
if (mutt_strncmp ("-----BEGIN PGP ", buf, 15) == 0)
|
|
{
|
|
- if (mutt_strcmp ("MESSAGE-----\n", buf + 15) == 0)
|
|
+ if (mutt_strxcmp ("MESSAGE-----\n", buf + 15) == 0)
|
|
enc = 1;
|
|
- else if (mutt_strcmp ("SIGNED MESSAGE-----\n", buf + 15) == 0)
|
|
+ else if (mutt_strxcmp ("SIGNED MESSAGE-----\n", buf + 15) == 0)
|
|
sgn = 1;
|
|
- else if (mutt_strcmp ("PUBLIC KEY BLOCK-----\n", buf + 15) == 0)
|
|
+ else if (mutt_strxcmp ("PUBLIC KEY BLOCK-----\n", buf + 15) == 0)
|
|
key = 1;
|
|
}
|
|
}
|
|
@@ -1228,9 +1228,9 @@ BODY *pgp_sign_message (BODY *a)
|
|
*/
|
|
while (fgets (buffer, sizeof (buffer) - 1, pgpout) != NULL)
|
|
{
|
|
- if (mutt_strcmp ("-----BEGIN PGP MESSAGE-----\n", buffer) == 0)
|
|
+ if (mutt_strxcmp ("-----BEGIN PGP MESSAGE-----\n", buffer) == 0)
|
|
fputs ("-----BEGIN PGP SIGNATURE-----\n", fp);
|
|
- else if (mutt_strcmp("-----END PGP MESSAGE-----\n", buffer) == 0)
|
|
+ else if (mutt_strxcmp("-----END PGP MESSAGE-----\n", buffer) == 0)
|
|
fputs ("-----END PGP SIGNATURE-----\n", fp);
|
|
else
|
|
fputs (buffer, fp);
|