NaClErrorCode NaClAppLoadFileDynamically( struct NaClApp *nap, struct NaClDesc *ndp, struct NaClValidationMetadata *metadata) { struct NaClElfImage *image = NULL; NaClErrorCode ret = LOAD_INTERNAL; image = NaClElfImageNew(ndp, &ret); if (NULL == image || LOAD_OK != ret) { goto done; } ret = NaClElfImageLoadDynamically(image, nap, ndp, metadata); if (LOAD_OK != ret) { goto done; } nap->user_entry_pt = nap->initial_entry_pt; nap->initial_entry_pt = NaClElfImageGetEntryPoint(image); if (!NaClAddrIsValidIrtEntryPt(nap, nap->initial_entry_pt)) { ret = LOAD_BAD_ENTRY; goto done; } done: NaClElfImageDelete(image); return ret; }
NaClErrorCode NaClAppLoadFileDynamically( struct NaClApp *nap, struct Gio *gio_file, struct NaClValidationMetadata *metadata) { struct NaClElfImage *image = NULL; NaClErrorCode ret = LOAD_INTERNAL; image = NaClElfImageNew((struct Gio *) gio_file, &ret); if (NULL == image || LOAD_OK != ret) { goto done; } ret = NaClElfImageLoadDynamically(image, nap, gio_file, metadata); if (LOAD_OK != ret) { goto done; } nap->user_entry_pt = nap->initial_entry_pt; nap->initial_entry_pt = NaClElfImageGetEntryPoint(image); done: NaClElfImageDelete(image); return ret; }