[dovecot-cvs] dovecot/src/lib-index/mbox mbox-append.c,1.35,1.36 mbox-from.c,1.8,1.9 mbox-index.c,1.57,1.58 mbox-index.h,1.21,1.22 mbox-rewrite.c,1.48,1.49
cras at procontrol.fi
cras at procontrol.fi
Sat Jan 4 19:26:32 EET 2003
Update of /home/cvs/dovecot/src/lib-index/mbox
In directory danu:/tmp/cvs-serv386/lib-index/mbox
Modified Files:
mbox-append.c mbox-from.c mbox-index.c mbox-index.h
mbox-rewrite.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: mbox-append.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mbox/mbox-append.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -d -r1.35 -r1.36
--- mbox-append.c 20 Dec 2002 07:53:52 -0000 1.35
+++ mbox-append.c 4 Jan 2003 17:26:30 -0000 1.36
@@ -44,7 +44,7 @@
}
/* parse the From-line */
- internal_date = mbox_from_parse_date((const char *) data + 5, size - 5);
+ internal_date = mbox_from_parse_date(data + 5, size - 5);
if (internal_date == (time_t)-1)
internal_date = ioloop_time;
Index: mbox-from.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mbox/mbox-from.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- mbox-from.c 21 Dec 2002 22:02:58 -0000 1.8
+++ mbox-from.c 4 Jan 2003 17:26:30 -0000 1.9
@@ -16,9 +16,9 @@
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};
-time_t mbox_from_parse_date(const char *msg, size_t size)
+time_t mbox_from_parse_date(const unsigned char *msg, size_t size)
{
- const char *msg_end;
+ const unsigned char *msg_end;
struct tm tm;
int i;
@@ -41,7 +41,7 @@
/* month */
for (i = 0; i < 12; i++) {
- if (strncasecmp(months[i], msg, 3) == 0) {
+ if (memcasecmp(months[i], msg, 3) == 0) {
tm.tm_mon = i;
break;
}
Index: mbox-index.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mbox/mbox-index.c,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -d -r1.57 -r1.58
--- mbox-index.c 3 Jan 2003 15:57:12 -0000 1.57
+++ mbox-index.c 4 Jan 2003 17:26:30 -0000 1.58
@@ -139,7 +139,7 @@
{
}
-static MailFlags mbox_get_status_flags(const char *value, size_t len)
+static MailFlags mbox_get_status_flags(const unsigned char *value, size_t len)
{
MailFlags flags;
size_t i;
@@ -168,7 +168,7 @@
return flags;
}
-static void mbox_update_custom_flags(const char *value __attr_unused__,
+static void mbox_update_custom_flags(const unsigned char *value __attr_unused__,
size_t len __attr_unused__,
int index, void *context)
{
@@ -179,7 +179,7 @@
}
static MailFlags
-mbox_get_keyword_flags(const char *value, size_t len,
+mbox_get_keyword_flags(const unsigned char *value, size_t len,
const char *custom_flags[MAIL_CUSTOM_FLAGS_COUNT])
{
MailFlags flags;
@@ -190,7 +190,7 @@
return flags;
}
-static int mbox_parse_imapbase(const char *value, size_t len,
+static int mbox_parse_imapbase(const unsigned char *value, size_t len,
MboxHeaderContext *ctx)
{
const char **flag;
@@ -247,8 +247,8 @@
}
void mbox_header_func(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)
{
MboxHeaderContext *ctx = context;
@@ -256,12 +256,10 @@
size_t i;
int fixed = FALSE;
- /* Pretty much copy&pasted from popa3d by Solar Designer */
- switch (*name) {
- case '\0':
+ if (name_len == 0) {
/* End of headers */
if (!ctx->set_read_limit)
- break;
+ return;
/* a) use Content-Length, b) search for "From "-line */
start_offset = ctx->input->v_offset;
@@ -279,12 +277,15 @@
i_stream_seek(ctx->input, start_offset);
i_stream_set_read_limit(ctx->input, end_offset);
- break;
+ return;
+ }
+ /* Pretty much copy&pasted from popa3d by Solar Designer */
+ switch (*name) {
case 'R':
case 'r':
if (!ctx->received && name_len == 8 &&
- strncasecmp(name, "Received", 8) == 0) {
+ memcasecmp(name, "Received", 8) == 0) {
ctx->received = TRUE;
fixed = TRUE;
}
@@ -293,7 +294,7 @@
case 'C':
case 'c':
if (name_len == 14 && ctx->set_read_limit &&
- strncasecmp(name, "Content-Length", 14) == 0) {
+ memcasecmp(name, "Content-Length", 14) == 0) {
/* manual parsing, so we can deal with uoff_t */
ctx->content_length = 0;
for (i = 0; i < value_len; i++) {
@@ -312,12 +313,12 @@
case 'D':
case 'd':
if (name_len == 12)
- fixed = strncasecmp(name, "Delivered-To", 12) == 0;
+ fixed = memcasecmp(name, "Delivered-To", 12) == 0;
else if (name_len == 4) {
/* Received-header contains date too,
and more trusted one */
fixed = !ctx->received &&
- strncasecmp(name, "Date", 4) == 0;
+ memcasecmp(name, "Date", 4) == 0;
}
break;
@@ -327,13 +328,13 @@
/* Received-header contains unique ID too,
and more trusted one */
fixed = !ctx->received &&
- strncasecmp(name, "Message-ID", 10) == 0;
+ memcasecmp(name, "Message-ID", 10) == 0;
}
break;
case 'S':
case 's':
- if (name_len == 6 && strncasecmp(name, "Status", 6) == 0) {
+ if (name_len == 6 && memcasecmp(name, "Status", 6) == 0) {
/* update message flags */
ctx->flags |= mbox_get_status_flags(value, value_len);
}
@@ -345,18 +346,18 @@
/* Let the local delivery agent help generate unique
ID's but don't blindly trust this header alone as
it could just as easily come from the remote. */
- fixed = strncasecmp(name, "X-Delivery-ID:", 13) == 0;
+ fixed = memcasecmp(name, "X-Delivery-ID:", 13) == 0;
} else if (name_len == 8 &&
- strncasecmp(name, "X-Status", 8) == 0) {
+ memcasecmp(name, "X-Status", 8) == 0) {
/* update message flags */
ctx->flags |= mbox_get_status_flags(value, value_len);
} else if (name_len == 10 &&
- strncasecmp(name, "X-Keywords", 10) == 0) {
+ memcasecmp(name, "X-Keywords", 10) == 0) {
/* update custom message flags */
ctx->flags |= mbox_get_keyword_flags(value, value_len,
ctx->custom_flags);
} else if (name_len == 10 &&
- strncasecmp(name, "X-IMAPbase", 10) == 0) {
+ memcasecmp(name, "X-IMAPbase", 10) == 0) {
/* update list of custom message flags */
(void)mbox_parse_imapbase(value, value_len, ctx);
}
@@ -367,9 +368,10 @@
md5_update(&ctx->md5, value, value_len);
}
-void mbox_keywords_parse(const char *value, size_t len,
+void mbox_keywords_parse(const unsigned char *value, size_t len,
const char *custom_flags[MAIL_CUSTOM_FLAGS_COUNT],
- void (*func)(const char *, size_t, int, void *),
+ void (*func)(const unsigned char *, size_t,
+ int, void *),
void *context)
{
size_t custom_len[MAIL_CUSTOM_FLAGS_COUNT];
@@ -409,7 +411,7 @@
/* check if it's found */
for (i = 0; i < MAIL_CUSTOM_FLAGS_COUNT; i++) {
if (custom_len[i] == item_len &&
- strncasecmp(custom_flags[i], value, item_len) == 0)
+ memcasecmp(custom_flags[i], value, item_len) == 0)
break;
}
@@ -484,8 +486,8 @@
if (msg[i] == '\n') {
msg += startpos;
i -= startpos;
- return mbox_from_parse_date((const char *) msg,
- size) != (time_t)-1;
+ return mbox_from_parse_date(msg, size) !=
+ (time_t)-1;
}
}
}
Index: mbox-index.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mbox/mbox-index.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- mbox-index.h 6 Dec 2002 01:09:23 -0000 1.21
+++ mbox-index.h 4 Jan 2003 17:26:30 -0000 1.22
@@ -31,12 +31,13 @@
IStream *input);
void mbox_header_free_context(MboxHeaderContext *ctx);
void mbox_header_func(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);
-void mbox_keywords_parse(const char *value, size_t len,
+void mbox_keywords_parse(const unsigned char *value, size_t len,
const char *custom_flags[MAIL_CUSTOM_FLAGS_COUNT],
- void (*func)(const char *, size_t, int, void *),
+ void (*func)(const unsigned char *, size_t,
+ int, void *),
void *context);
int mbox_skip_crlf(IStream *input);
void mbox_skip_empty_lines(IStream *input);
@@ -55,7 +56,7 @@
int mbox_index_append(MailIndex *index, IStream *input);
-time_t mbox_from_parse_date(const char *msg, size_t size);
+time_t mbox_from_parse_date(const unsigned char *msg, size_t size);
const char *mbox_from_create(const char *sender, time_t time);
int mbox_index_rewrite(MailIndex *index);
Index: mbox-rewrite.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mbox/mbox-rewrite.c,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -d -r1.48 -r1.49
--- mbox-rewrite.c 21 Dec 2002 22:02:58 -0000 1.48
+++ mbox-rewrite.c 4 Jan 2003 17:26:30 -0000 1.49
@@ -196,7 +196,7 @@
return TRUE;
}
-static const char *strip_chars(const char *value, size_t value_len,
+static const char *strip_chars(const unsigned char *value, size_t value_len,
const char *list)
{
/* @UNSAFE: leave only unknown flags, very likely none */
@@ -216,7 +216,7 @@
return ret;
}
-static void update_stripped_custom_flags(const char *value, size_t len,
+static void update_stripped_custom_flags(const unsigned char *value, size_t len,
int index, void *context)
{
String *str = context;
@@ -229,7 +229,7 @@
}
}
-static const char *strip_custom_flags(const char *value, size_t len,
+static const char *strip_custom_flags(const unsigned char *value, size_t len,
MboxRewriteContext *ctx)
{
String *str;
@@ -241,8 +241,8 @@
}
static void header_func(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)
{
MboxRewriteContext *ctx = context;
@@ -252,25 +252,27 @@
if (ctx->failed)
return;
- if (name_len == 6 && strncasecmp(name, "Status", 6) == 0) {
+ if (name_len == 6 && memcasecmp(name, "Status", 6) == 0) {
ctx->status_found = TRUE;
str = strip_chars(value, value_len, "RO");
(void)mbox_write_status(ctx, str);
- } else if (name_len == 8 && strncasecmp(name, "X-Status", 8) == 0) {
+ } else if (name_len == 8 && memcasecmp(name, "X-Status", 8) == 0) {
ctx->xstatus_found = TRUE;
str = strip_chars(value, value_len, "ADFT");
(void)mbox_write_xstatus(ctx, str);
- } else if (name_len == 10 && strncasecmp(name, "X-Keywords", 10) == 0) {
+ } else if (name_len == 10 && memcasecmp(name, "X-Keywords", 10) == 0) {
ctx->ximapbase_found = TRUE;
str = strip_custom_flags(value, value_len, ctx);
(void)mbox_write_xkeywords(ctx, str);
- } else if (name_len == 10 && strncasecmp(name, "X-IMAPbase", 10) == 0) {
+ } else if (name_len == 10 && memcasecmp(name, "X-IMAPbase", 10) == 0) {
if (ctx->seq == 1) {
/* temporarily copy the value to make sure we
don't overflow it */
+ const char *str;
+
t_push();
- value = t_strndup(value, value_len);
- ctx->uid_validity = strtoul(value, &end, 10);
+ str = t_strndup(value, value_len);
+ ctx->uid_validity = strtoul(str, &end, 10);
while (*end == ' ') end++;
ctx->uid_last = strtoul(end, &end, 10);
t_pop();
@@ -279,7 +281,7 @@
(void)mbox_write_ximapbase(ctx);
}
} else if (name_len == 14 &&
- strncasecmp(name, "Content-Length", 14) == 0) {
+ memcasecmp(name, "Content-Length", 14) == 0) {
ctx->content_length_found = TRUE;
(void)mbox_write_content_length(ctx);
} else if (name_len > 0) {
More information about the dovecot-cvs
mailing list