summaryrefslogtreecommitdiff
path: root/lib/util/idtree.c
AgeCommit message (Collapse)AuthorFilesLines
2010-12-06idtree: fix overflow for v. large ids on allocation and removalRusty Russell1-1/+1
Chris Cowan tracked down a SEGV in sub_alloc: idp->level can actually be equal to 7 (MAX_LEVEL) there, as it can be in sub_remove. (We unfairly blamed a shift of a signed var for this crash in commit 2db1987f5a3a). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Autobuild-User: Rusty Russell <rusty@rustcorp.com.au> Autobuild-Date: Mon Dec 6 05:02:22 CET 2010 on sn-devel-104
2010-10-06idtree: fix right shift of signed ints, crash on large ids on AIXRusty Russell1-1/+1
Right-shifting signed integers in undefined; indeed it seems that on AIX with their compiler, doing a 30-bit shift on (INT_MAX-200) gives 0, not 1 as we might expect. The obvious fix is to make id and oid unsigned: l (level count) is also logically unsigned. (Note: Samba doesn't generally get to ids > 1 billion, but ctdb does) Reported-by: Chris Cowan <cc@us.ibm.com> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Autobuild-User: Rusty Russell <rusty@samba.org> Autobuild-Date: Wed Oct 6 08:31:09 UTC 2010 on sn-devel-104
2010-06-10Since idtree assigns sequentially, it rarely reaches high numbers.Rusty Russell1-3/+5
But such numbers can be forced with idr_get_new_above(), and that reveals two bugs: 1) Crash in sub_remove() caused by pa array being too short. 2) Shift by more than 32 in _idr_find(), which is undefined, causing the "outside the current tree" optimization to misfire and return NULL.
2009-04-01lib/util: fallback to any id in idr_get_new_random()Stefan Metzmacher1-2/+6
metze
2009-02-02lib/util: s/new/pn in idtree.cStefan Metzmacher1-16/+16
metze
2008-10-11Move lib/util from source4 to top-level libutil.Jelmer Vernooij1-0/+403
Conflicts: source4/Makefile