diff options
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/vmpa.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/arch/vmpa.c b/src/arch/vmpa.c index 4c2b4cf..a289a28 100644 --- a/src/arch/vmpa.c +++ b/src/arch/vmpa.c @@ -812,8 +812,24 @@ int cmp_mrange_with_vmpa(const mrange_t *a, const vmpa2t *b) { diff = compute_vmpa_diff(&a->addr, b); - if (diff < a->length) + /** + * On prend en compte le cas très particulier des couvertures vides. + * + * C'est typiquement le cas avec les espaces de symboles pendant la + * phase de désassemblage, après laquelle ces espaces deviennent bornés. + * + */ + + if (diff == 0 && a->length == 0) result = 0; + + /** + * Sinon on regarde simplement si l'adresse est contenue. + */ + + else if (diff < a->length) + result = 0; + else result = 1; |