aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeex <zeex@rocketmail.com>2020-11-11 01:53:05 +0600
committerZeex <zeex@rocketmail.com>2020-11-11 01:53:09 +0600
commit063df0fd5c82194a8579a4ea6c8700a0b22642cb (patch)
treed22aa42db8d14aab16f8ac916491d8171f727a5d
parenta86a253e6e764275a21ab7c9348f84d1f95e409f (diff)
downloadsubhook-063df0fd5c82194a8579a4ea6c8700a0b22642cb.zip
subhook-063df0fd5c82194a8579a4ea6c8700a0b22642cb.tar.gz
subhook-063df0fd5c82194a8579a4ea6c8700a0b22642cb.tar.bz2
Make subhook_new() not fail on any trampoline-related error
-rw-r--r--subhook_x86.c29
1 files changed, 12 insertions, 17 deletions
diff --git a/subhook_x86.c b/subhook_x86.c
index 53f3c02..d9a26d6 100644
--- a/subhook_x86.c
+++ b/subhook_x86.c
@@ -488,23 +488,18 @@ SUBHOOK_EXPORT subhook_t SUBHOOK_API subhook_new(void *src,
}
hook->trampoline = subhook_alloc_code(hook->trampoline_size);
- if (hook->trampoline == NULL) {
- goto error_exit;
- }
-
- error = subhook_make_trampoline(
- hook->trampoline,
- hook->src,
- hook->jmp_size,
- &hook->trampoline_len,
- hook->flags);
- if (error != 0 && error != -EOVERFLOW) {
- goto error_exit;
- }
-
- if (hook->trampoline_len == 0) {
- subhook_free_code(hook->trampoline, hook->trampoline_size);
- hook->trampoline = NULL;
+ if (hook->trampoline != NULL) {
+ error = subhook_make_trampoline(hook->trampoline,
+ hook->src,
+ hook->jmp_size,
+ &hook->trampoline_len,
+ hook->flags);
+ if (error != 0) {
+ subhook_free_code(hook->trampoline, hook->trampoline_size);
+ hook->trampoline = NULL;
+ hook->trampoline_size = 0;
+ hook->trampoline_len = 0;
+ }
}
return hook;