(/home/sate/Testcases/c/cve/wireshark-1.2.0/epan/emem.c) |
| |
| 1193 | | | emem_tree_insert32(emem_tree_t *se_tree, guint32 key, void *data) |
| 1194 | | | { |
| 1195 | | | emem_tree_node_t *node; |
| 1196 | | | |
| 1197 | | | node=se_tree->tree; |
| 1198 | | | |
| 1199 | | | |
| 1200 | | | if(!node){ |
| 1201 | | | node=se_tree->malloc(sizeof(emem_tree_node_t)); |
| 1202 | | | switch(se_tree->type){ |
| 1203 | | | case EMEM_TREE_TYPE_RED_BLACK: |
| 1204 | | | node->u.rb_color=EMEM_TREE_RB_COLOR_BLACK; |
| 1205 | | | break; |
| 1206 | | | } |
| 1207 | | | node->parent=NULL; |
| 1208 | | | node->left=NULL; |
| 1209 | | | node->right=NULL; |
| 1210 | | | node->key32=key; |
| 1211 | | | node->data=data; |
| 1212 | | | node->u.is_subtree = EMEM_TREE_NODE_IS_DATA; |
| 1213 | | | se_tree->tree=node; |
| 1214 | | | return; |
| 1215 | | | } |
| 1216 | | | |
| 1217 | | | |
| 1218 | | | |
| 1219 | | | |
| 1220 | | | while(1){ |
| 1221 | | | |
| 1222 | | | if(key==node->key32){ |
| 1223 | | | node->data=data; |
| 1224 | | | return; |
| 1225 | | | } |
| 1226 | | | if(key<node->key32) { |
| 1227 | | | if(!node->left){ |
| 1228 | | | |
| 1229 | | | emem_tree_node_t *new_node; |
| 1230 | | | new_node=se_tree->malloc(sizeof(emem_tree_node_t)); |
| 1231 | | | node->left=new_node; |
| 1232 | | | new_node->parent=node; |
| 1233 | | | new_node->left=NULL; |
| 1234 | | | new_node->right=NULL; |
| 1235 | | | new_node->key32=key; |
| 1236 | | | new_node->data=data; |
| 1237 | | | new_node->u.is_subtree=EMEM_TREE_NODE_IS_DATA; |
| 1238 | | | node=new_node; |
| 1239 | | | break; |
| 1240 | | | } |
| 1241 | | | node=node->left; |
| 1242 | | | continue; |
| 1243 | | | } |
| 1244 | | | 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.
|
|
| 1245 | | | if(!node->right){ |
| 1246 | | | |
| 1247 | | | emem_tree_node_t *new_node; |
| 1248 | | | new_node=se_tree->malloc(sizeof(emem_tree_node_t)); |
| 1249 | | | node->right=new_node; |
| 1250 | | | new_node->parent=node; |
| 1251 | | | new_node->left=NULL; |
| 1252 | | | new_node->right=NULL; |
| 1253 | | | new_node->key32=key; |
| 1254 | | | new_node->data=data; |
| 1255 | | | new_node->u.is_subtree=EMEM_TREE_NODE_IS_DATA; |
| 1256 | | | node=new_node; |
| 1257 | | | break; |
| 1258 | | | } |
| 1259 | | | node=node->right; |
| 1260 | | | continue; |
| 1261 | | | } |
| 1262 | | | } |
| 1263 | | | |
| 1264 | | | |
| 1265 | | | switch(se_tree->type){ |
| 1266 | | | case EMEM_TREE_TYPE_RED_BLACK: |
| 1267 | | | node->u.rb_color=EMEM_TREE_RB_COLOR_RED; |
| 1268 | | | rb_insert_case1(se_tree, node); |
| 1269 | | | break; |
| 1270 | | | } |
| 1271 | | | } |
| |