diff options
Diffstat (limited to 'plugins/dalvik/pseudo')
| -rw-r--r-- | plugins/dalvik/pseudo/fill.c | 19 | 
1 files changed, 19 insertions, 0 deletions
| diff --git a/plugins/dalvik/pseudo/fill.c b/plugins/dalvik/pseudo/fill.c index 9820348..92178d9 100644 --- a/plugins/dalvik/pseudo/fill.c +++ b/plugins/dalvik/pseudo/fill.c @@ -177,6 +177,7 @@ GArchInstruction *g_dalvik_fill_instr_new(uint16_t ident, GDalvikContext *ctx, c  {      GDalvikFillInstr *result;               /* Structure à retourner       */      phys_t consumed;                        /* Données consommées          */ +    vmpa2t padding;                         /* Emplacement d'un bourrage   */      assert(ident == DPO_FILL_ARRAY_DATA); @@ -195,6 +196,24 @@ GArchInstruction *g_dalvik_fill_instr_new(uint16_t ident, GDalvikContext *ctx, c      if (!g_dalvik_context_register_array_data(ctx, pos, result->item_width, consumed))          goto gdfin_bad; +    if (consumed % sizeof(uint16_t) != 0) +    { +        copy_vmpa(&padding, pos); +        advance_vmpa(&padding, consumed); + +        if (!g_dalvik_context_register_array_data_padding(ctx, &padding)) +        { +            /** +             * Si on a pu prendre le premier verrou, on devrait avoir l'assurance +             * de prendre le second ! +             */ +            assert(false); +        } + + + +    } +      return G_ARCH_INSTRUCTION(result);   gdfin_bad: | 
