diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/libcsem/exit.c | 7 | ||||
-rw-r--r-- | plugins/lnxsyscalls/collect.c | 4 | ||||
-rw-r--r-- | plugins/pychrysalide/arch/instruction.c | 8 |
3 files changed, 13 insertions, 6 deletions
diff --git a/plugins/libcsem/exit.c b/plugins/libcsem/exit.c index ee536b5..794369e 100644 --- a/plugins/libcsem/exit.c +++ b/plugins/libcsem/exit.c @@ -54,7 +54,7 @@ static void mark_one_kind_of_exit_as_return(const GLoadedBinary *binary, const c GArchInstruction *instr; /* Instruction de sortie */ size_t count; /* Nbre de sources affichées */ size_t i; /* Boucle de parcours */ - instr_link_t *source; /* Instruction diverse liée */ + const instr_link_t *source; /* Instruction diverse liée */ format = G_BIN_FORMAT(g_loaded_binary_get_format(binary)); @@ -81,9 +81,10 @@ static void mark_one_kind_of_exit_as_return(const GLoadedBinary *binary, const c { source = g_arch_instruction_get_source(instr, i); - if (source->type != ILT_CALL) continue; + if (source->type == ILT_CALL) + g_arch_instruction_set_flag(source->linked, AIF_RETURN_POINT); - g_arch_instruction_set_flag(source->linked, AIF_RETURN_POINT); + unref_instr_link(source); } diff --git a/plugins/lnxsyscalls/collect.c b/plugins/lnxsyscalls/collect.c index 87f5fa2..e73b444 100644 --- a/plugins/lnxsyscalls/collect.c +++ b/plugins/lnxsyscalls/collect.c @@ -488,7 +488,7 @@ bool look_for_registers(tracked_path *path, size_t sid, GArchProcessor *proc, co size_t count; /* Nombre de sources présentes */ bool first; /* Premier aiguillage ? */ size_t i; /* Boucle de parcours */ - instr_link_t *link; /* Détails d'un lien */ + const instr_link_t *link; /* Détails d'un lien */ size_t next; /* Indice de la pile suivante */ stack = &path->stacks[sid]; @@ -589,6 +589,8 @@ bool look_for_registers(tracked_path *path, size_t sid, GArchProcessor *proc, co } + unref_instr_link(link); + } g_arch_instruction_unlock_src(instr); diff --git a/plugins/pychrysalide/arch/instruction.c b/plugins/pychrysalide/arch/instruction.c index e9a2e04..8c3d78d 100644 --- a/plugins/pychrysalide/arch/instruction.c +++ b/plugins/pychrysalide/arch/instruction.c @@ -110,7 +110,7 @@ static PyObject *py_arch_instruction_get_sources(PyObject *self, void *unused) { PyObject *result; /* Instance à retourner */ GArchInstruction *instr; /* Version native */ - instr_link_t *source; /* Origine des liens */ + const instr_link_t *source; /* Origine des liens */ size_t count; /* Nombre de liens présents */ size_t i; /* Boucle de parcours */ PyObject *linked; /* Source de lien Python */ @@ -135,6 +135,8 @@ static PyObject *py_arch_instruction_get_sources(PyObject *self, void *unused) ret = PyTuple_SetItem(result, i, Py_BuildValue("(OO)", linked, type)); assert(ret == 0); + unref_instr_link(source); + } g_arch_instruction_unlock_src(instr); @@ -161,7 +163,7 @@ static PyObject *py_arch_instruction_get_destinations(PyObject *self, void *unus { PyObject *result; /* Instance à retourner */ GArchInstruction *instr; /* Version native */ - instr_link_t *dest; /* Destination des liens */ + const instr_link_t *dest; /* Destination des liens */ size_t count; /* Nombre de liens présents */ size_t i; /* Boucle de parcours */ PyObject *linked; /* Destination de lien Python */ @@ -186,6 +188,8 @@ static PyObject *py_arch_instruction_get_destinations(PyObject *self, void *unus ret = PyTuple_SetItem(result, i, Py_BuildValue("(OO)", linked, type)); assert(ret == 0); + unref_instr_link(dest); + } g_arch_instruction_unlock_dest(instr); |