fix: harden small core containers
This commit is contained in:
15
trie.c
15
trie.c
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user