@@ -632,7 +632,7 @@ static RGraphNode *_edf_mem_get(RAnalEsilDFG *dfg, ut64 addr, ut32 size) {
632632 return mem_node ;
633633}
634634
635- static RGraphNode * _edf_const_get (RAnalEsilDFG * dfg , char * const_value ) {
635+ static RGraphNode * _edf_const_get (RAnalEsilDFG * dfg , const char * const_value ) {
636636 RGraphNode * orig_value_gnode = r_graph_add_node (dfg -> flow , r_anal_esil_dfg_node_new (dfg , const_value ));
637637 RAnalEsilDFGNode * value_node = r_anal_esil_dfg_node_new (dfg , const_value );
638638 value_node -> type = R_ANAL_ESIL_DFG_TAG_CONST ;
@@ -692,7 +692,7 @@ static void edf_sf_constraint(RStrBuf *result, const char *new_node_str) {
692692}
693693
694694static bool edf_sf (REsil * esil ) {
695- char * bitsize = r_esil_pop (esil );
695+ const char * bitsize = r_esil_pop (esil );
696696 R_LOG_INFO ("bitsize not yet implemented for sf (%s)" , bitsize );
697697 return edf_use_new_push_1 (esil , "$s" , edf_sf_constraint );
698698}
@@ -726,19 +726,15 @@ static bool edf_bf(REsil *esil) {
726726static bool _edf_consume_2_set_reg (REsil * esil , const bool use_origin ) {
727727 const char * op_string = esil -> current_opstr ;
728728 RAnalEsilDFG * edf = (RAnalEsilDFG * )esil -> user ;
729- char * dst = r_esil_pop (esil );
730- char * src = r_esil_pop (esil );
729+ const char * dst = r_esil_pop (esil );
730+ const char * src = r_esil_pop (esil );
731731
732732 if (!src || !dst ) {
733- free (dst );
734- free (src );
735733 return false;
736734 }
737735
738736 int dst_type = r_esil_get_parm_type (esil , dst );
739737 if (dst_type == R_ESIL_PARM_INVALID ) {
740- free (dst );
741- free (src );
742738 return false;
743739 }
744740
@@ -756,15 +752,12 @@ static bool _edf_consume_2_set_reg(REsil *esil, const bool use_origin) {
756752 RGraphNode * old_dst_node = dst_node ;
757753
758754 if (!src_node || !dst_node ) {
759- free (src );
760- free (dst );
761755 return false;
762756 }
763757
764758 RAnalEsilDFGNode * eop_node = r_anal_esil_dfg_node_new (edf , src );
765759 r_strbuf_appendf (eop_node -> content , ",%s,%s" , dst , op_string );
766760 eop_node -> type = R_ANAL_ESIL_DFG_TAG_GENERATIVE ;
767- free (src );
768761
769762 RGraphNode * op_node = r_graph_add_node (edf -> flow , eop_node );
770763 r_graph_add_edge (edf -> flow , dst_node , op_node );
@@ -788,7 +781,6 @@ static bool _edf_consume_2_set_reg(REsil *esil, const bool use_origin) {
788781 r_graph_add_edge (edf -> flow , op_node , dst_node );
789782 _edf_reg_set (edf , dst , dst_node );
790783 edf -> cur = dst_node ;
791- free (dst );
792784 return true;
793785}
794786
@@ -804,7 +796,7 @@ static bool edf_consume_2_set_reg(REsil *esil) {
804796static bool edf_pop (REsil * esil ) {
805797 const char * op_string = esil -> current_opstr ;
806798 RAnalEsilDFG * edf = (RAnalEsilDFG * )esil -> user ;
807- char * src = r_esil_pop (esil );
799+ const char * src = r_esil_pop (esil );
808800 if (!src ) {
809801 return false;
810802 }
@@ -818,13 +810,11 @@ static bool edf_pop(REsil *esil) {
818810 src_node = _edf_var_get (edf , src );
819811 }
820812 if (!src_node ) {
821- free (src );
822813 return false;
823814 }
824815 RAnalEsilDFGNode * eop_node = r_anal_esil_dfg_node_new (edf , src );
825816 r_strbuf_appendf (eop_node -> content , ",%s" , op_string );
826817 eop_node -> type = R_ANAL_ESIL_DFG_TAG_GENERATIVE ;
827- free (src );
828818 RGraphNode * op_node = r_graph_add_node (edf -> flow , eop_node );
829819 r_graph_add_edge (edf -> flow , src_node , op_node );
830820 return true;
@@ -833,7 +823,7 @@ static bool edf_pop(REsil *esil) {
833823#if 1
834824// TODO: kill DUP
835825static bool edf_dup (REsil * esil ) {
836- char * src = r_esil_pop (esil );
826+ const char * src = r_esil_pop (esil );
837827 if (!src ) {
838828 return false;
839829 }
@@ -880,11 +870,9 @@ static bool edf_dup(REsil *esil) {
880870static bool edf_consume_2_push_1 (REsil * esil ) {
881871 const char * op_string = esil -> current_opstr ;
882872 RAnalEsilDFG * edf = (RAnalEsilDFG * )esil -> user ;
883- char * src [2 ] = { r_esil_pop (esil ), r_esil_pop (esil ) };
873+ const char * src [2 ] = { r_esil_pop (esil ), r_esil_pop (esil ) };
884874
885875 if (!src [0 ] || !src [1 ]) {
886- free (src [0 ]);
887- free (src [1 ]);
888876 return false;
889877 }
890878 RAnalEsilDFGNode * eop_node = r_anal_esil_dfg_node_new (edf , src [1 ]);
@@ -918,9 +906,6 @@ static bool edf_consume_2_push_1(REsil *esil) {
918906 r_graph_add_edge (edf -> flow , src_node [i ], op_node );
919907 }
920908
921- free (src [0 ]);
922- free (src [1 ]);
923-
924909 RAnalEsilDFGNode * result = r_anal_esil_dfg_node_new (edf , "result_" );
925910 result -> type = R_ANAL_ESIL_DFG_TAG_RESULT ;
926911 if (const_result ) {
@@ -937,7 +922,7 @@ static bool edf_consume_2_push_1(REsil *esil) {
937922static bool edf_consume_1_push_1 (REsil * esil ) {
938923 const char * op_string = esil -> current_opstr ;
939924 RAnalEsilDFG * edf = (RAnalEsilDFG * )esil -> user ;
940- char * src = r_esil_pop (esil );
925+ const char * src = r_esil_pop (esil );
941926 if (!src ) {
942927 return false;
943928 }
@@ -970,8 +955,6 @@ static bool edf_consume_1_push_1(REsil *esil) {
970955 const_result = (eop_type == R_ESIL_OP_TYPE_MATH ) & !! (ec_node -> type & R_ANAL_ESIL_DFG_TAG_CONST );
971956 }
972957
973- free (src );
974-
975958 r_graph_add_edge (edf -> flow , src_node , op_node );
976959
977960 RAnalEsilDFGNode * result = r_anal_esil_dfg_node_new (edf , "result_" );
@@ -1015,7 +998,7 @@ static bool _edf_is_stack_or_mem_const_node(RAnalEsilDFG *dfg, RGraphNode *gnode
1015998static bool edf_consume_1_get_mem_push_1 (REsil * esil ) {
1016999 const char * op_string = esil -> current_opstr ;
10171000 RAnalEsilDFG * edf = (RAnalEsilDFG * )esil -> user ;
1018- char * src = r_esil_pop (esil );
1001+ const char * src = r_esil_pop (esil );
10191002 if (!src ) {
10201003 return false;
10211004 }
@@ -1065,20 +1048,17 @@ static bool edf_consume_1_get_mem_push_1(REsil *esil) {
10651048 // if (_edf_is_stack_or_mem_const_node (edf, src_node)) {
10661049 RStrBuf * expr = filter_gnode_expr (edf , src_node );
10671050 r_esil_parse (edf -> esil , r_strbuf_get (expr ));
1068- char * src_addr_str = r_esil_pop (edf -> esil );
1051+ const char * src_addr_str = r_esil_pop (edf -> esil );
10691052 R_LOG_DEBUG ("resolved: %s => %s" , r_strbuf_get (expr ), src_addr_str );
10701053 r_strbuf_free (expr );
10711054 ut64 src_addr ;
10721055 r_esil_get_parm (esil , src_addr_str , & src_addr );
1073- free (src_addr_str );
10741056 r_esil_stack_free (edf -> esil );
10751057 edf -> iob .system (edf -> iob .io , "reset" );
10761058 mem_src_node = _edf_mem_get (edf , src_addr , mem_size );
10771059 }
10781060 }
10791061
1080- free (src );
1081-
10821062 r_graph_add_edge (edf -> flow , src_node , op_node );
10831063 if (mem_src_node ) {
10841064 r_graph_add_edge (edf -> flow , mem_src_node , op_node );
@@ -1101,12 +1081,10 @@ static bool edf_consume_1_get_mem_push_1(REsil *esil) {
11011081static bool edf_consume_2_set_mem (REsil * esil ) {
11021082 const char * op_string = esil -> current_opstr ;
11031083 RAnalEsilDFG * edf = (RAnalEsilDFG * )esil -> user ;
1104- char * dst = r_esil_pop (esil );
1105- char * src = r_esil_pop (esil );
1084+ const char * dst = r_esil_pop (esil );
1085+ const char * src = r_esil_pop (esil );
11061086
11071087 if (!src || !dst ) {
1108- free (dst );
1109- free (src );
11101088 return 0 ;
11111089 }
11121090
@@ -1167,11 +1145,10 @@ static bool edf_consume_2_set_mem(REsil *esil) {
11671145 if (((RAnalEsilDFGNode * )dst_node -> data )-> type & R_ANAL_ESIL_DFG_TAG_CONST ) {
11681146 RStrBuf * expr = filter_gnode_expr (edf , dst_node );
11691147 r_esil_parse (edf -> esil , r_strbuf_get (expr ));
1170- char * dst_addr_str = r_esil_pop (edf -> esil );
1148+ const char * dst_addr_str = r_esil_pop (edf -> esil );
11711149 R_LOG_DEBUG ("resolved: %s => %s" , r_strbuf_get (expr ), dst_addr_str );
11721150 r_strbuf_free (expr );
11731151 r_esil_get_parm (esil , dst_addr_str , & dst_addr );
1174- free (dst_addr_str );
11751152 r_esil_stack_free (edf -> esil );
11761153 edf -> iob .system (edf -> iob .io , "reset" );
11771154 write_result = true;
@@ -1181,13 +1158,10 @@ static bool edf_consume_2_set_mem(REsil *esil) {
11811158 }
11821159
11831160 if (!src_node || !dst_node ) {
1184- free (src );
1185- free (dst );
11861161 return false;
11871162 }
11881163
11891164 RAnalEsilDFGNode * eop_node = r_anal_esil_dfg_node_new (edf , src );
1190- R_FREE (src );
11911165 r_strbuf_appendf (eop_node -> content , ",%s,%s" , dst , op_string );
11921166 eop_node -> type = R_ANAL_ESIL_DFG_TAG_GENERATIVE ;
11931167
@@ -1206,19 +1180,16 @@ static bool edf_consume_2_set_mem(REsil *esil) {
12061180 _edf_mem_set (edf , dst_addr , mem_size , dst_node );
12071181 }
12081182 r_graph_add_edge (edf -> flow , op_node , dst_node );
1209- free (dst );
12101183 return true;
12111184}
12121185
12131186static bool edf_consume_2_use_set_mem (REsil * esil ) {
12141187 const char * op_string = esil -> current_opstr ;
12151188 RAnalEsilDFG * edf = (RAnalEsilDFG * )esil -> user ;
1216- char * dst = r_esil_pop (esil );
1217- char * src = r_esil_pop (esil );
1189+ const char * dst = r_esil_pop (esil );
1190+ const char * src = r_esil_pop (esil );
12181191
12191192 if (!src || !dst ) {
1220- free (dst );
1221- free (src );
12221193 return 0 ;
12231194 }
12241195
@@ -1279,11 +1250,10 @@ static bool edf_consume_2_use_set_mem(REsil *esil) {
12791250 if (((RAnalEsilDFGNode * )dst_node -> data )-> type & R_ANAL_ESIL_DFG_TAG_CONST ) {
12801251 RStrBuf * expr = filter_gnode_expr (edf , dst_node );
12811252 r_esil_parse (edf -> esil , r_strbuf_get (expr ));
1282- char * dst_addr_str = r_esil_pop (edf -> esil );
1253+ const char * dst_addr_str = r_esil_pop (edf -> esil );
12831254 R_LOG_DEBUG ("resolved: %s => %s" , r_strbuf_get (expr ), dst_addr_str );
12841255 r_strbuf_free (expr );
12851256 r_esil_get_parm (esil , dst_addr_str , & dst_addr );
1286- free (dst_addr_str );
12871257 r_esil_stack_free (edf -> esil );
12881258 edf -> iob .system (edf -> iob .io , "reset" );
12891259 write_result = true;
@@ -1293,13 +1263,10 @@ static bool edf_consume_2_use_set_mem(REsil *esil) {
12931263 }
12941264
12951265 if (!src_node || !dst_node ) {
1296- free (src );
1297- free (dst );
12981266 return false;
12991267 }
13001268
13011269 RAnalEsilDFGNode * eop_node = r_anal_esil_dfg_node_new (edf , src );
1302- R_FREE (src );
13031270 r_strbuf_appendf (eop_node -> content , ",%s,%s" , dst , op_string );
13041271 eop_node -> type = R_ANAL_ESIL_DFG_TAG_GENERATIVE ;
13051272
@@ -1328,17 +1295,15 @@ static bool edf_consume_2_use_set_mem(REsil *esil) {
13281295 dst_node = r_graph_add_node (edf -> flow , result );
13291296 }
13301297 r_graph_add_edge (edf -> flow , op_node , dst_node );
1331- free (dst );
13321298 return true;
13331299}
13341300
13351301static bool edf_consume_1_set_mem (REsil * esil ) {
13361302 const char * op_string = esil -> current_opstr ;
13371303 RAnalEsilDFG * edf = (RAnalEsilDFG * )esil -> user ;
1338- char * dst = r_esil_pop (esil );
1304+ const char * dst = r_esil_pop (esil );
13391305
13401306 if (!dst ) {
1341- free (dst );
13421307 return 0 ;
13431308 }
13441309
@@ -1389,11 +1354,10 @@ static bool edf_consume_1_set_mem(REsil *esil) {
13891354 if (((RAnalEsilDFGNode * )dst_node -> data )-> type & R_ANAL_ESIL_DFG_TAG_CONST ) {
13901355 RStrBuf * expr = filter_gnode_expr (edf , dst_node );
13911356 r_esil_parse (edf -> esil , r_strbuf_get (expr ));
1392- char * dst_addr_str = r_esil_pop (edf -> esil );
1357+ const char * dst_addr_str = r_esil_pop (edf -> esil );
13931358 R_LOG_DEBUG ("resolved: %s => %s" , r_strbuf_get (expr ), dst_addr_str );
13941359 r_strbuf_free (expr );
13951360 r_esil_get_parm (esil , dst_addr_str , & dst_addr );
1396- free (dst_addr_str );
13971361 r_esil_stack_free (edf -> esil );
13981362 edf -> iob .system (edf -> iob .io , "reset" );
13991363 write_result = true;
@@ -1403,7 +1367,6 @@ static bool edf_consume_1_set_mem(REsil *esil) {
14031367 }
14041368
14051369 if (!dst_node ) {
1406- free (dst );
14071370 return false;
14081371 }
14091372
@@ -1434,7 +1397,6 @@ static bool edf_consume_1_set_mem(REsil *esil) {
14341397 dst_node = r_graph_add_node (edf -> flow , result );
14351398 }
14361399 r_graph_add_edge (edf -> flow , op_node , dst_node );
1437- free (dst );
14381400 return true;
14391401}
14401402
@@ -1461,7 +1423,7 @@ static bool edf_use_new_push_1(REsil *esil, const char *op_string, AddConstraint
14611423
14621424static bool edf_consume_1_use_old_new_push_1 (REsil * esil , const char * op_string , AddConstraintStringConsume1UseOldNewCB cb ) {
14631425 RAnalEsilDFG * edf = (RAnalEsilDFG * )esil -> user ;
1464- char * src = r_esil_pop (esil );
1426+ const char * src = r_esil_pop (esil );
14651427
14661428 if (!src ) {
14671429 return false;
@@ -1481,7 +1443,6 @@ static bool edf_consume_1_use_old_new_push_1(REsil *esil, const char *op_string,
14811443 } else {
14821444 src_node = _edf_var_get (edf , src );
14831445 }
1484- free (src );
14851446
14861447 r_graph_add_edge (edf -> flow , src_node , op_node );
14871448
@@ -2032,7 +1993,7 @@ R_API void r_anal_esil_dfg_fold_const(RAnal *anal, RAnalEsilDFG *dfg) {
20321993
20331994 // running filtered const-expression in esil
20341995 r_esil_parse (esil , r_strbuf_get (filtered ));
2035- char * reduced_const = r_esil_pop (esil );
1996+ const char * reduced_const = r_esil_pop (esil );
20361997 r_strbuf_free (filtered );
20371998
20381999 // this part needs some explanation:
@@ -2063,7 +2024,6 @@ R_API void r_anal_esil_dfg_fold_const(RAnal *anal, RAnalEsilDFG *dfg) {
20632024 gnode = (RGraphNode * )r_queue_dequeue (dfg -> todo );
20642025 enode = (RAnalEsilDFGNode * )gnode -> data ;
20652026 r_strbuf_set (enode -> content , reduced_const );
2066- free (reduced_const );
20672027
20682028 while (!r_queue_is_empty (dfg -> todo )) {
20692029 gnode = (RGraphNode * )r_queue_dequeue (dfg -> todo );
0 commit comments