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;
p++;
}
}
- if (p != c) {
+
+ if (p > c) {
EVP_DigestUpdate (ck, c, p - c);
}
}