]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
SEARCH RETURN (PARTIAL): Allow higher:lower numbers in partial seq range.
authorTimo Sirainen <tss@iki.fi>
Wed, 4 Feb 2009 19:18:24 +0000 (14:18 -0500)
committerTimo Sirainen <tss@iki.fi>
Wed, 4 Feb 2009 19:18:24 +0000 (14:18 -0500)
--HG--
branch : HEAD

src/imap/cmd-search.c

index 1b255d62c1168625628231b3e9ff316a51fdc7da..b4699f9242b4cca0b23ad80eed0fdd725b63c711 100644 (file)
@@ -57,11 +57,20 @@ imap_partial_range_parse(struct imap_search_context *ctx, const char *str)
        ctx->partial2 = 0;
        for (; *str >= '0' && *str <= '9'; str++)
                ctx->partial1 = ctx->partial1 * 10 + *str-'0';
-       if (*str != ':')
+       if (*str != ':' || ctx->partial1 == 0)
                return -1;
        for (str++; *str >= '0' && *str <= '9'; str++)
                ctx->partial2 = ctx->partial2 * 10 + *str-'0';
-       return *str == '\0' ? 0 : -1;
+       if (*str != '\0' || ctx->partial2 == 0)
+               return -1;
+
+       if (ctx->partial1 > ctx->partial2) {
+               uint32_t temp = ctx->partial2;
+               ctx->partial2 = ctx->partial1;
+               ctx->partial1 = temp;
+       }
+
+       return 0;
 }
 
 static bool