summaryrefslogtreecommitdiff
path: root/src/analysis
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis')
-rw-r--r--src/analysis/routine.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/analysis/routine.c b/src/analysis/routine.c
index 9ec17c1..f84a5fd 100644
--- a/src/analysis/routine.c
+++ b/src/analysis/routine.c
@@ -35,6 +35,7 @@
#include "../arch/raw.h"
#include "../common/extstr.h"
+#include "../core/params.h"
@@ -1156,6 +1157,9 @@ void g_binary_routine_print_code(const GBinRoutine *routine, GLangOutput *lang,
char *g_binary_routine_build_tooltip(const GBinRoutine *routine, const GLoadedBinary *binary)
{
char *result; /* Description à retourner */
+ GGenConfig *config; /* Configuration à consulter */
+ unsigned int max_calls; /* Quantité d'appels à afficher*/
+ unsigned int max_strings; /* Nbre de chaînes à afficher */
unsigned int ins_count; /* Quantité d'instructions */
unsigned int call_count; /* Quantité d'appels */
char *call_info; /* Détails des appels */
@@ -1176,6 +1180,19 @@ char *g_binary_routine_build_tooltip(const GBinRoutine *routine, const GLoadedBi
result = NULL;
+
+ config = get_main_configuration();
+
+ if (!g_generic_config_get_value(config, MPK_TOOLTIP_MAX_CALLS, &max_calls))
+ goto gbrbt_bad_config;
+
+ max_calls++;
+
+ if (!g_generic_config_get_value(config, MPK_TOOLTIP_MAX_STRINGS, &max_strings))
+ goto gbrbt_bad_config;
+
+ max_strings++;
+
ins_count = 0;
call_count = 0;
@@ -1212,10 +1229,10 @@ char *g_binary_routine_build_tooltip(const GBinRoutine *routine, const GLoadedBi
call_count++;
- if (call_count > 6)
+ if (call_count > max_calls)
continue;
- if (call_count == 6)
+ if (call_count == max_calls)
{
call_info = stradd(call_info, "\n ...");
continue;
@@ -1263,10 +1280,10 @@ char *g_binary_routine_build_tooltip(const GBinRoutine *routine, const GLoadedBi
string_count++;
- if (string_count > 6)
+ if (string_count > max_strings)
continue;
- if (string_count == 6)
+ if (string_count == max_strings)
{
string_info = stradd(string_info, "\n ...");
continue;
@@ -1379,6 +1396,8 @@ char *g_binary_routine_build_tooltip(const GBinRoutine *routine, const GLoadedBi
g_object_unref(G_OBJECT(cache));
g_object_unref(G_OBJECT(proc));
+ gbrbt_bad_config:
+
return result;
}