when a source rpm somehow contains a non-portable uid (instead of root),
getUname is invoked repeatedly, each time increments uid_used, but then
getpwuid returns a NULL pointer. The code correctly checks for the NULL
pointer, but does not redecrement uid_used in that case. Thus, if there
are more than 1024 calls to getUname with this same non-portable uid, the
unames cache overflows eventhough none of its entries are used.
I have no idea how the non-portable uid gets into the src rpm in the first
place, perhaps this is an issue of login vs non-login root shell when creating
the src rpm.
Ah yes, that was borken. Thanks for the analysis.
Fixed in CVS, will be in rpm-4.3 when built.