zx_vmo_replace_as_executable
名称
vmo_replace_as_executable —— 向vmo添加可执行权限
概要
#include <zircon/syscalls.h>
zx_status_t zx_vmo_replace_as_executable(zx_handle_t vmo, zx_handle_t vmex, zx_handle_t* out);
描述
vmo_replace_as_executable() 的功能是使用新的虚拟内存对象替换vmo,它引用与vmo相同的底层VM对象,并添加ZX_RIGHT_EXECUTE权限。
操作完成后vmo将失效。
权限
vmex必须是有效的ZX_RSRC_KIND_VMEX类型资源句柄,或ZX_HANDLE_INVALID(以便于迁移旧代码)。
TODO(SEC-42):禁止使用ZX_HANDLE_INVALID。
返回值
vmo_replace_as_executable() 调用成功则返回ZX_OK,如果发生错误,则返回负的错误码。
错误码
ZX_ERR_BAD_HANDLE:vmo不是有效的VM对象句柄,或vmex不是有效的ZX_RSRC_KIND_VMEX资源句柄。
ZX_ERR_NO_MEMORY:由于内存不足导致的失败。 而用户空间无法处理这个(不太可能发生的)错误。 在将来的构建版本中,将不再出现此错误。