[dovecot-cvs] dovecot/src/lib-storage/index index-fetch-section.c,1.27,1.28 index-search.c,1.56,1.57

cras at procontrol.fi cras at procontrol.fi
Sat Jan 4 19:26:32 EET 2003


Update of /home/cvs/dovecot/src/lib-storage/index
In directory danu:/tmp/cvs-serv386/lib-storage/index

Modified Files:
	index-fetch-section.c index-search.c 
Log Message:
Use unsigned char* when accessing non-NUL terminating strings. Compiler
warnings would then notify about accidentally passing them to functions which
require them NUL-terminated. Changed a few functions to use void* to avoid
unneeded casting.



Index: index-fetch-section.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/index-fetch-section.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- index-fetch-section.c	3 Jan 2003 15:57:12 -0000	1.27
+++ index-fetch-section.c	4 Jan 2003 17:26:30 -0000	1.28
@@ -18,7 +18,7 @@
 
 	uoff_t skip, max_size;
 	const char *const *fields;
-	int (*match_func) (const char *const *, const char *, size_t);
+	int (*match_func) (const char *const *, const unsigned char *, size_t);
 } FetchHeaderFieldContext;
 
 /* For FETCH[HEADER.FIELDS*] we need to modify the header data before sending
@@ -97,9 +97,10 @@
 }
 
 static int header_match(const char *const *fields,
-			const char *name, size_t size)
+			const unsigned char *name, size_t size)
 {
-	const char *field, *name_start, *name_end;
+	const unsigned char *name_start, *name_end;
+	const char *field;
 
 	if (size == 0)
 		return FALSE;
@@ -131,25 +132,25 @@
 }
 
 static int header_match_not(const char *const *fields,
-			    const char *name, size_t size)
+			    const unsigned char *name, size_t size)
 {
 	return !header_match(fields, name, size);
 }
 
 static int header_match_mime(const char *const *fields __attr_unused__,
-			     const char *name, size_t size)
+			     const unsigned char *name, size_t size)
 {
-	if (size > 8 && strncasecmp(name, "Content-", 8) == 0)
+	if (size > 8 && memcasecmp(name, "Content-", 8) == 0)
 		return TRUE;
 
-	if (size == 12 && strncasecmp(name, "Mime-Version", 13) == 0)
+	if (size == 12 && memcasecmp(name, "Mime-Version", 12) == 0)
 		return TRUE;
 
 	return FALSE;
 }
 
 static int fetch_header_append(FetchHeaderFieldContext *ctx,
-			       const char *str, size_t size)
+			       const unsigned char *str, size_t size)
 {
 	if (ctx->skip > 0) {
 		if (ctx->skip >= size) {
@@ -179,13 +180,13 @@
 }
 
 static void fetch_header_field(MessagePart *part __attr_unused__,
-			       const char *name, size_t name_len,
-			       const char *value __attr_unused__,
+			       const unsigned char *name, size_t name_len,
+			       const unsigned char *value __attr_unused__,
 			       size_t value_len __attr_unused__,
 			       void *context)
 {
 	FetchHeaderFieldContext *ctx = context;
-	const char *field_start, *field_end, *cr, *p;
+	const unsigned char *field_start, *field_end, *cr, *p;
 
 	/* see if we want this field. */
 	if (!ctx->match_func(ctx->fields, name, name_len))

Index: index-search.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/index-search.c,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -d -r1.56 -r1.57
--- index-search.c	3 Jan 2003 15:57:12 -0000	1.56
+++ index-search.c	4 Jan 2003 17:26:30 -0000	1.57
@@ -43,7 +43,7 @@
 	MailSearchArg *args;
 	int custom_header;
 
-	const char *name, *value;
+	const unsigned char *name, *value;
 	size_t name_len, value_len;
 } SearchHeaderContext;
 
@@ -341,7 +341,6 @@
 	ImapEnvelopeField env_field;
         HeaderSearchContext *hdr_search_ctx;
 	const char *envelope, *field;
-	size_t size;
 	int ret;
 
 	switch (arg->type) {
@@ -417,9 +416,10 @@
 				break;
 			}
 
-			size = strlen(field);
-			ret = message_header_search(field, size,
-						    hdr_search_ctx) ? 1 : 0;
+			ret = message_header_search(
+						(const unsigned char *) field,
+						strlen(field),
+						hdr_search_ctx) ? 1 : 0;
 		}
 	}
 	t_pop();
@@ -457,35 +457,31 @@
 	case SEARCH_SENTSINCE:
 		/* date is handled differently than others */
 		if (ctx->name_len == 4 &&
-		    strncasecmp(ctx->name, "Date", 4) == 0) {
+		    memcasecmp(ctx->name, "Date", 4) == 0) {
 			search_sent(arg->type, arg->value.str,
 				    t_strndup(ctx->value, ctx->value_len));
 		}
 		return;
 
 	case SEARCH_FROM:
-		if (ctx->name_len != 4 ||
-		    strncasecmp(ctx->name, "From", 4) != 0)
+		if (ctx->name_len != 4 || memcasecmp(ctx->name, "From", 4) != 0)
 			return;
 		break;
 	case SEARCH_TO:
-		if (ctx->name_len != 2 ||
-		    strncasecmp(ctx->name, "To", 2) != 0)
+		if (ctx->name_len != 2 || memcasecmp(ctx->name, "To", 2) != 0)
 			return;
 		break;
 	case SEARCH_CC:
-		if (ctx->name_len != 2 ||
-		    strncasecmp(ctx->name, "Cc", 2) != 0)
+		if (ctx->name_len != 2 || memcasecmp(ctx->name, "Cc", 2) != 0)
 			return;
 		break;
 	case SEARCH_BCC:
-		if (ctx->name_len != 3 ||
-		    strncasecmp(ctx->name, "Bcc", 3) != 0)
+		if (ctx->name_len != 3 || memcasecmp(ctx->name, "Bcc", 3) != 0)
 			return;
 		break;
 	case SEARCH_SUBJECT:
 		if (ctx->name_len != 7 ||
-		    strncasecmp(ctx->name, "Subject", 7) != 0)
+		    memcasecmp(ctx->name, "Subject", 7) != 0)
 			return;
 		break;
 	case SEARCH_HEADER:
@@ -493,7 +489,7 @@
 
 		len = strlen(arg->hdr_field_name);
 		if (ctx->name_len != len ||
-		    strncasecmp(ctx->name, arg->hdr_field_name, len) != 0)
+		    memcasecmp(ctx->name, arg->hdr_field_name, len) != 0)
 			return;
 	case SEARCH_TEXT:
 		/* TEXT goes through all headers */
@@ -525,19 +521,19 @@
 }
 
 static void search_header(MessagePart *part __attr_unused__,
-			  const char *name, size_t name_len,
-			  const char *value, size_t value_len,
+			  const unsigned char *name, size_t name_len,
+			  const unsigned char *value, size_t value_len,
 			  void *context)
 {
 	SearchHeaderContext *ctx = context;
 
 	if ((name_len > 0 && ctx->custom_header) ||
-	    (name_len == 4 && strncasecmp(name, "Date", 4) == 0) ||
-	    (name_len == 4 && strncasecmp(name, "From", 4) == 0) ||
-	    (name_len == 2 && strncasecmp(name, "To", 2) == 0) ||
-	    (name_len == 2 && strncasecmp(name, "Cc", 2) == 0) ||
-	    (name_len == 3 && strncasecmp(name, "Bcc", 3) == 0) ||
-	    (name_len == 7 && strncasecmp(name, "Subject", 7) == 0)) {
+	    (name_len == 4 && memcasecmp(name, "Date", 4) == 0) ||
+	    (name_len == 4 && memcasecmp(name, "From", 4) == 0) ||
+	    (name_len == 2 && memcasecmp(name, "To", 2) == 0) ||
+	    (name_len == 2 && memcasecmp(name, "Cc", 2) == 0) ||
+	    (name_len == 3 && memcasecmp(name, "Bcc", 3) == 0) ||
+	    (name_len == 7 && memcasecmp(name, "Subject", 7) == 0)) {
 		ctx->name = name;
 		ctx->value = value;
 		ctx->name_len = name_len;




More information about the dovecot-cvs mailing list