(/home/sate/Testcases/c/cve/wireshark-1.2.0/epan/emem.c) |
| |
| 1273 | | | static void* lookup_or_insert32(emem_tree_t *se_tree, guint32 key, void*(*func)(void*),void* ud, int is_subtree) { |
| 1274 | | | emem_tree_node_t *node; |
| 1275 | | | |
| 1276 | | | node=se_tree->tree; |
| 1277 | | | |
| 1278 | | | |
| 1279 | | | if(!node){ |
| 1280 | | | node=se_tree->malloc(sizeof(emem_tree_node_t)); |
| 1281 | | | switch(se_tree->type){ |
| 1282 | | | case EMEM_TREE_TYPE_RED_BLACK: |
| 1283 | | | node->u.rb_color=EMEM_TREE_RB_COLOR_BLACK; |
| 1284 | | | break; |
| 1285 | | | } |
| 1286 | | | node->parent=NULL; |
| 1287 | | | node->left=NULL; |
| 1288 | | | node->right=NULL; |
| 1289 | | | node->key32=key; |
| 1290 | | | node->data= func(ud); |
| 1291 | | | node->u.is_subtree = is_subtree; |
| 1292 | | | se_tree->tree=node; |
| 1293 | | | return node->data; |
| 1294 | | | } |
| 1295 | | | |
| 1296 | | | |
| 1297 | | | |
| 1298 | | | |
| 1299 | | | while(1){ |
| 1300 | | | |
| 1301 | | | if(key==node->key32){ |
| 1302 | | | return node->data; |
| 1303 | | | } |
| 1304 | | | if(key<node->key32) { |
| 1305 | | | if(!node->left){ |
| 1306 | | | |
| 1307 | | | emem_tree_node_t *new_node; |
| 1308 | | | new_node=se_tree->malloc(sizeof(emem_tree_node_t)); |
| 1309 | | | node->left=new_node; |
| 1310 | | | new_node->parent=node; |
| 1311 | | | new_node->left=NULL; |
| 1312 | | | new_node->right=NULL; |
| 1313 | | | new_node->key32=key; |
| 1314 | | | new_node->data= func(ud); |
| 1315 | | | new_node->u.is_subtree = is_subtree; |
| 1316 | | | node=new_node; |
| 1317 | | | break; |
| 1318 | | | } |
| 1319 | | | node=node->left; |
| 1320 | | | continue; |
| 1321 | | | } |
| 1322 | | | if(key>node->key32) { |
Redundant Condition
key > node->key32 always evaluates to true. This may be because: - There is a constant assignment to one or more of the variables involved.
- An earlier conditional statement has already ensured that key > node->key32 cannot be false.
- A crashing bug occurs on every path where key > node->key32 could have evaluated to false. Look for a preceding Null Pointer Dereference or Division By Zero warning.
|
|
| 1323 | | | if(!node->right){ |
| 1324 | | | |
| 1325 | | | emem_tree_node_t *new_node; |
| 1326 | | | new_node=se_tree->malloc(sizeof(emem_tree_node_t)); |
| 1327 | | | node->right=new_node; |
| 1328 | | | new_node->parent=node; |
| 1329 | | | new_node->left=NULL; |
| 1330 | | | new_node->right=NULL; |
| 1331 | | | new_node->key32=key; |
| 1332 | | | new_node->data= func(ud); |
| 1333 | | | new_node->u.is_subtree = is_subtree; |
| 1334 | | | node=new_node; |
| 1335 | | | break; |
| 1336 | | | } |
| 1337 | | | node=node->right; |
| 1338 | | | continue; |
| 1339 | | | } |
| 1340 | | | } |
| 1341 | | | |
| 1342 | | | |
| 1343 | | | switch(se_tree->type){ |
| 1344 | | | case EMEM_TREE_TYPE_RED_BLACK: |
| 1345 | | | node->u.rb_color=EMEM_TREE_RB_COLOR_RED; |
| 1346 | | | rb_insert_case1(se_tree, node); |
| 1347 | | | break; |
| 1348 | | | } |
| 1349 | | | |
| 1350 | | | return node->data; |
| 1351 | | | } |
| |