fix: harden small core containers

This commit is contained in:
2026-08-12 15:54:16 +09:00
parent cec62cc40f
commit 103f2ec448
11 changed files with 136 additions and 18 deletions

15
trie.c
View File

@@ -118,6 +118,8 @@ trieget(Trie *t, char *key, int klen, int *vlen)
int ni;
int i;
if(t == nil || klen < 0 || (klen > 0 && key == nil))
return nil;
ni = t->root;
for(i = 0; i < klen; i++){
ni = find(t, ni, key[i]);
@@ -126,7 +128,8 @@ trieget(Trie *t, char *key, int klen, int *vlen)
}
if(t->nodes[ni].val == nil)
return nil;
*vlen = t->nodes[ni].vlen;
if(vlen != nil)
*vlen = t->nodes[ni].vlen;
return t->nodes[ni].val;
}
@@ -136,15 +139,19 @@ trielookup(Trie *t, char *key, int klen, char **val, int *vlen)
int ni;
int i;
if(t == nil || klen < 0 || (klen > 0 && key == nil))
return 0;
ni = t->root;
for(i = 0; i < klen; i++){
ni = find(t, ni, key[i]);
if(ni < 0)
return 0;
}
if(val != nil && t->nodes[ni].val != nil){
*val = t->nodes[ni].val;
*vlen = t->nodes[ni].vlen;
if(t->nodes[ni].val != nil){
if(val != nil)
*val = t->nodes[ni].val;
if(vlen != nil)
*vlen = t->nodes[ni].vlen;
}
return 1;
}