Skip to content

Commit 80d5d49

Browse files
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 ee1b30f. Reported-by: Tom Lane as per coverity Reviewed-by: Tom Lane Discussion: https://postgr.es/m/2089517.1711299216%40sss.pgh.pa.us
1 parent 66c0185 commit 80d5d49

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

src/include/lib/radixtree.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1615,10 +1615,11 @@ RT_EXTEND_DOWN(RT_RADIX_TREE * tree, RT_PTR_ALLOC * parent_slot, uint64 key, int
16151615
node = child;
16161616
shift -= RT_SPAN;
16171617
}
1618+
Assert(shift == 0);
16181619

16191620
/* Reserve slot for the value. */
16201621
n4 = (RT_NODE_4 *) node.local;
1621-
n4->chunks[0] = RT_GET_KEY_CHUNK(key, shift);
1622+
n4->chunks[0] = RT_GET_KEY_CHUNK(key, 0);
16221623
n4->base.count = 1;
16231624

16241625
return &n4->children[0];

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy