diff options
author | Camil Staps | 2016-01-31 14:52:51 +0100 |
---|---|---|
committer | Camil Staps | 2016-01-31 14:52:51 +0100 |
commit | c8911bdd352577199bdecb23688be9b31771338a (patch) | |
tree | e0d3f3486ccc7d0cae08cf7ab0934081899d4320 /hacking.c | |
parent | Working version (diff) |
License, cc=80
Diffstat (limited to 'hacking.c')
-rw-r--r-- | hacking.c | 31 |
1 files changed, 27 insertions, 4 deletions
@@ -1,3 +1,25 @@ +/** The MIT License (MIT) + +Copyright (c) 2016 Camil Staps + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. */ + #include <fcntl.h> #include <stdio.h> #include <stdlib.h> @@ -17,7 +39,7 @@ Callable* newCallable() { } Callable* funcnameToCallable(char* fname, - uint8_t n_params, ffi_type** parameter_types, ffi_type* return_type) { + uint8_t n_params, ffi_type** parameter_types, ffi_type* return_type) { // http://stackoverflow.com/a/1118808/1544337 Elf64_Shdr * shdr; Elf64_Ehdr * ehdr; @@ -41,7 +63,7 @@ Callable* funcnameToCallable(char* fname, fprintf(stderr, "file is not an ELF binary\n"); exit(1); } - /* Let's get the elf sections */ + /* Let's get the elf sections */ if (((ehdr = elf64_getehdr(elf)) == NULL) || ((scn = elf_getscn(elf, ehdr->e_shstrndx)) == NULL) || ((data = elf_getdata(scn, NULL)) == NULL)) { @@ -63,7 +85,7 @@ Callable* funcnameToCallable(char* fname, } Elf64_Sym *esym = (Elf64_Sym*) data->d_buf; - Elf64_Sym *lastsym = (Elf64_Sym*) ((char*) data->d_buf + data->d_size); + Elf64_Sym *lastsym = (Elf64_Sym*) ((char*)data->d_buf+data->d_size); /* Look through all symbols */ for (; esym < lastsym; esym++) { @@ -84,7 +106,8 @@ Callable* funcnameToCallable(char* fname, /* Call and hope we don't segfault!*/ if (fp != NULL) { - if (ffi_prep_cif(callable->cif, FFI_DEFAULT_ABI, n_params, return_type, parameter_types) == FFI_OK) { + if (ffi_prep_cif(callable->cif, FFI_DEFAULT_ABI, n_params, + return_type, parameter_types) == FFI_OK) { elf_end(elf); callable->fp = fp; return callable; |