X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/8964aa089c709fbf370be623d75a204480b26b3c..e17ad658ec0b0a16dfaa0b1b1f99e1ff4eb87ba4:/Mach/Inject.cpp diff --git a/Mach/Inject.cpp b/Mach/Inject.cpp index 982ffe4..a017a5b 100644 --- a/Mach/Inject.cpp +++ b/Mach/Inject.cpp @@ -20,7 +20,7 @@ /* }}} */ #include "TargetConditionals.h" -#ifdef TARGET_OS_IPHONE +#if TARGET_OS_IPHONE #undef __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ #define __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ __IPHONE_5_0 #endif @@ -57,8 +57,8 @@ void InjectLibrary(pid_t pid) { memcpy(library, addr.dli_fname, flength); library[flength] = '\0'; _assert(strcmp(library + flength - 6, ".dylib") == 0); -#ifndef TARGET_OS_IPHONE - strcpy(library + flength - 6, "-any.dylib"); +#if !TARGET_OS_IPHONE + strcpy(library + flength - 6, "-###.dylib"); #endif mach_port_t self(mach_task_self()), task; @@ -207,6 +207,7 @@ void InjectLibrary(pid_t pid) { baton->dyld = info.all_image_info_addr; baton->pid = getpid(); + memset(baton->error, 0, sizeof(baton->error)); memcpy(baton->library, library, length); mach_vm_size_t size(depth + Stack_); @@ -291,8 +292,11 @@ void InjectLibrary(pid_t pid) { mach_vm_size_t error(sizeof(baton->error)); _krncall(mach_vm_read_overwrite(task, data + offsetof(Baton, error), sizeof(baton->error), reinterpret_cast(&baton->error), &error)); _assert(error == sizeof(baton->error)); - if (baton->error[0] != '\0') + + if (baton->error[0] != '\0') { + baton->error[sizeof(baton->error) - 1] = '\0'; CYThrow("%s", baton->error); + } _krncall(mach_vm_deallocate(task, code, trampoline->size_)); _krncall(mach_vm_deallocate(task, stack, size));