mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-11-27 07:21:09 +08:00
Fix potential integer handling issue in radixtree.h.
Coverity complained about the integer handling issue; if we start with
an arbitrary non-negative shift value, the loop may decrement it down
to something less than zero before exiting. This commit adds an
assertion to make sure the 'shift' is always 0 after the loop, and
uses 0 as the shift to get the key chunk in the following operation.
Introduced by ee1b30f12
.
Reported-by: Tom Lane as per coverity
Reviewed-by: Tom Lane
Discussion: https://postgr.es/m/2089517.1711299216%40sss.pgh.pa.us
This commit is contained in:
parent
66c0185a3d
commit
80d5d4937c
@ -1615,10 +1615,11 @@ RT_EXTEND_DOWN(RT_RADIX_TREE * tree, RT_PTR_ALLOC * parent_slot, uint64 key, int
|
||||
node = child;
|
||||
shift -= RT_SPAN;
|
||||
}
|
||||
Assert(shift == 0);
|
||||
|
||||
/* Reserve slot for the value. */
|
||||
n4 = (RT_NODE_4 *) node.local;
|
||||
n4->chunks[0] = RT_GET_KEY_CHUNK(key, shift);
|
||||
n4->chunks[0] = RT_GET_KEY_CHUNK(key, 0);
|
||||
n4->base.count = 1;
|
||||
|
||||
return &n4->children[0];
|
||||
|
Loading…
Reference in New Issue
Block a user