]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
quota: Fixed the quota limit check changes in previous commit.
authorTimo Sirainen <tss@iki.fi>
Tue, 5 Apr 2011 10:26:45 +0000 (13:26 +0300)
committerTimo Sirainen <tss@iki.fi>
Tue, 5 Apr 2011 10:26:45 +0000 (13:26 +0300)
Casting (uint64_t)-1 to (int64_t) isn't a good idea.

src/plugins/quota/quota.c

index d0b74a536a86ccb5699d033ff8411cad98782c22..2b9608962a4b9d911de292de3de400cd4e4ef97f 100644 (file)
@@ -1170,8 +1170,10 @@ static int quota_default_test_alloc(struct quota_transaction_context *ctx,
 
        *too_large_r = FALSE;
 
-       if (ctx->count_used + 1 <= (int64_t)ctx->count_ceil &&
-           ctx->bytes_used + (off_t)size <= (int64_t)ctx->bytes_ceil)
+       if ((ctx->count_used < 0 ||
+            (uint64_t)ctx->count_used + 1 <= ctx->count_ceil) &&
+           ((ctx->bytes_used < 0 && size <= ctx->bytes_ceil) ||
+            (uint64_t)ctx->bytes_used + size <= ctx->bytes_ceil))
                return 1;
 
        /* limit reached. only thing left to do now is to set too_large_r. */