Since idtree assigns sequentially, it rarely reaches high numbers.
authorRusty Russell <rusty@rustorp.com.au>
Thu, 10 Jun 2010 20:27:51 +0000 (13:27 -0700)
committerJeremy Allison <jra@samba.org>
Thu, 10 Jun 2010 20:27:51 +0000 (13:27 -0700)
commitb53f8c187de8c8aff5989e4a0a460970f89b9011
tree7f0fa2500047f31199931a23c10328ea6d859b2e
parent321d7a6303b651cc2533f4b72dc7cef6b7d64da4
Since idtree assigns sequentially, it rarely reaches high numbers.
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.
lib/util/idtree.c