2014-05-08 02:38:42

by Niu Yawei

[permalink] [raw]
Subject: [PATCH] libext2fs: fix dict_uint_cmp()

dict_uint_cmp() returns an usigned int value in int type, which
could mess the dict key comparison when the difference of two
keys is greater than INT_MAX.

Signed-off-by: Niu Yawei <[email protected]>
---
lib/quota/mkquota.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/lib/quota/mkquota.c b/lib/quota/mkquota.c
index 9883216..ba8c2da 100644
--- a/lib/quota/mkquota.c
+++ b/lib/quota/mkquota.c
@@ -207,7 +207,12 @@ static int dict_uint_cmp(const void *a, const void *b)
c = VOIDPTR_TO_UINT(a);
d = VOIDPTR_TO_UINT(b);

- return c - d;
+ if (c == d)
+ return 0;
+ else if (c > d)
+ return 1;
+ else
+ return -1;
}

static inline qid_t get_qid(struct ext2_inode *inode, int qtype)
--
1.7.1


2014-05-12 12:16:47

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [PATCH] libext2fs: fix dict_uint_cmp()

On Thu, May 08, 2014 at 10:38:53AM +0800, Niu Yawei wrote:
> dict_uint_cmp() returns an usigned int value in int type, which
> could mess the dict key comparison when the difference of two
> keys is greater than INT_MAX.
>
> Signed-off-by: Niu Yawei <[email protected]>

Applied, thanks!

- Ted