diff options
Diffstat (limited to 'src/ldso')
-rw-r--r-- | src/ldso/pe_load_framework_loader_ex.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/ldso/pe_load_framework_loader_ex.c b/src/ldso/pe_load_framework_loader_ex.c index 25428aa..cd3d8e6 100644 --- a/src/ldso/pe_load_framework_loader_ex.c +++ b/src/ldso/pe_load_framework_loader_ex.c @@ -31,6 +31,8 @@ int32_t pe_load_framework_loader_ex( abi); if (status) { + rtdata = &context; + context.hself = 0; context.hparent = 0; context.himage = 0; @@ -55,7 +57,16 @@ int32_t pe_load_framework_loader_ex( context.abi.data4[6] = abi->data4[6]; context.abi.data4[7] = abi->data4[7]; - rtdata = &context; + context.hldrctx[PE_LDSO_CTX_IDX_PREV_LOADER] = 0; + context.hldrctx[PE_LDSO_CTX_IDX_PREV_ROOT] = 0; + + if (__SIZEOF_POINTER__ == 8) { + context.hldrctx[PE_LDSO_CTX_IDX_RESERVED_1] = 0; + context.hldrctx[PE_LDSO_CTX_IDX_RESERVED_2] = 0; + } + } else { + rtdata->hldrctx[PE_LDSO_CTX_IDX_PREV_LOADER] = rtdata->hloader; + rtdata->hldrctx[PE_LDSO_CTX_IDX_PREV_ROOT] = rtdata->hroot; } if ((status = pe_find_framework_loader( |