diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-12-15 07:55:36 +0000 |
---|---|---|
committer | Andrew Lewis <nerf@judo.za.org> | 2018-01-24 11:55:35 +0200 |
commit | 22a9f37179f0de0f0ee0f7eee37c7f13415f2861 (patch) | |
tree | 6de6775ecf12000f391f9a3c27796cf0ab3a9403 | |
parent | 58b1db2e7a0a10dfb5ce2ff552b968d01c0e383c (diff) | |
download | rspamd-22a9f37179f0de0f0ee0f7eee37c7f13415f2861.tar.gz rspamd-22a9f37179f0de0f0ee0f7eee37c7f13415f2861.zip |
[Minor] Add some sanity checks when doing simple canonicalization
-rw-r--r-- | src/libserver/dkim.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/libserver/dkim.c b/src/libserver/dkim.c index 522f96a78..62b1f9cc3 100644 --- a/src/libserver/dkim.c +++ b/src/libserver/dkim.c @@ -1744,18 +1744,20 @@ rspamd_dkim_hash_update (EVP_MD_CTX *ck, const gchar *begin, gsize len) end = begin + len; p = begin; c = p; - while (p != end) { + + while (p < end) { if (*p == '\r') { - EVP_DigestUpdate (ck, c, p - c); + EVP_DigestUpdate (ck, c, p - c); EVP_DigestUpdate (ck, CRLF, sizeof (CRLF) - 1); p++; - if (*p == '\n') { + + if (p < end && *p == '\n') { p++; } c = p; } else if (*p == '\n') { - EVP_DigestUpdate (ck, c, p - c); + EVP_DigestUpdate (ck, c, p - c); EVP_DigestUpdate (ck, CRLF, sizeof (CRLF) - 1); p++; c = p; @@ -1764,7 +1766,8 @@ rspamd_dkim_hash_update (EVP_MD_CTX *ck, const gchar *begin, gsize len) p++; } } - if (p != c) { + + if (p > c) { EVP_DigestUpdate (ck, c, p - c); } } |