aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2017-12-15 07:55:36 +0000
committerAndrew Lewis <nerf@judo.za.org>2018-01-24 11:55:35 +0200
commit22a9f37179f0de0f0ee0f7eee37c7f13415f2861 (patch)
tree6de6775ecf12000f391f9a3c27796cf0ab3a9403
parent58b1db2e7a0a10dfb5ce2ff552b968d01c0e383c (diff)
downloadrspamd-22a9f37179f0de0f0ee0f7eee37c7f13415f2861.tar.gz
rspamd-22a9f37179f0de0f0ee0f7eee37c7f13415f2861.zip
[Minor] Add some sanity checks when doing simple canonicalization
-rw-r--r--src/libserver/dkim.c13
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);
}
}