From 5afe03d9758dedc2d11208b7ed350c3128f9ad2d Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 13 Mar 2006 06:58:09 +0000 Subject: r14308: fixed an out of range shift and an uninitialised error (This used to be commit 9acc445a21b7f04eb980a05109f2c73d58221f1a) --- source4/lib/util/idtree.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source4/lib') diff --git a/source4/lib/util/idtree.c b/source4/lib/util/idtree.c index d29c3b8fbd..c02a2636a1 100644 --- a/source4/lib/util/idtree.c +++ b/source4/lib/util/idtree.c @@ -107,6 +107,8 @@ static int sub_alloc(struct idr_context *idp, void *ptr, int *starting_id) int l, id; uint32_t bm; + memset(pa, 0, sizeof(pa)); + id = *starting_id; p = idp->top; l = idp->layers; @@ -271,7 +273,7 @@ static void *_idr_find(struct idr_context *idp, int id) /* Mask off upper bits we don't use for the search. */ id &= MAX_ID_MASK; - while (n > 0 && p) { + while (n >= IDR_BITS && p) { n -= IDR_BITS; p = p->ary[(id >> n) & IDR_MASK]; } -- cgit