diff --git a/src/lib-sieve/rfc2822.c b/src/lib-sieve/rfc2822.c
index 09dc32f5901b84d860dca9bc9f6b7a03ed7fe9c4..4ec3645b0b8ef6d6640cd537ecd655e5bc7f0250 100644
--- a/src/lib-sieve/rfc2822.c
+++ b/src/lib-sieve/rfc2822.c
@@ -41,8 +41,8 @@ bool rfc2822_header_field_name_verify
 bool rfc2822_header_field_body_verify
 (const char *field_body, unsigned int len, bool allow_crlf, bool allow_utf8)
 {
-	const char *p = field_body;
-	const char *pend = p + len;
+	const unsigned char *p = (const unsigned char *)field_body;
+	const unsigned char *pend = p + len;
 	bool is8bit = FALSE;
 
 	/* RFC5322:
@@ -60,7 +60,7 @@ bool rfc2822_header_field_body_verify
 		if ( (*p == '\r' || *p == '\n') && !allow_crlf )
 			return FALSE;
 
-		if ( !is8bit && ((unsigned char)*p) > 127 ) {
+		if ( !is8bit && *p > 127 ) {
 			if ( !allow_utf8 )
 				return FALSE;