--- src/commandconf.c.orig 2003-09-07 22:05:41.000000000 +0200 +++ src/commandconf.c 2003-09-07 22:10:27.000000000 +0200 @@ -163,8 +163,10 @@ conf_scan_string(all); if(confparse()){ + free(all); return RETFAIL; } + free(all); break; } @@ -511,6 +513,7 @@ conf_put_token(v); conf_put_token("\n"); free(v); + free(tmp); } --- src/gen_list.c.orig 2003-09-09 12:21:13.000000000 +0200 +++ src/gen_list.c 2003-09-09 13:30:10.000000000 +0200 @@ -208,6 +208,7 @@ { seltree* node=NULL; seltree* parent=NULL; + char* tmprxtok = NULL; node=(seltree*)malloc(sizeof(seltree)); node->childs=NULL; @@ -223,19 +224,20 @@ copy_rule_ref(node,r); if(tree!=NULL){ + tmprxtok = strrxtok(path); if(isrx){ - parent=get_seltree_node(tree,strrxtok(path)); + parent=get_seltree_node(tree,tmprxtok); }else { parent=get_seltree_node(tree,strlastslash(path)); } if(parent==NULL){ if(isrx){ - parent=new_seltree_node(tree,strrxtok(path),isrx,r); + parent=new_seltree_node(tree,tmprxtok,isrx,r); }else { parent=new_seltree_node(tree,strlastslash(path),isrx,r); } } - + free(tmprxtok); parent->childs=list_append(parent->childs,(void*)node); node->parent=parent; }else { @@ -311,6 +313,7 @@ /* Data should not be free'ed because it's in rxc struct * and freeing is done if error occour. */ + free(rxtok); }