have a makefile
This commit is contained in:
parent
497ac816b5
commit
571e200ecf
9
Makefile
Normal file
9
Makefile
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
DATA = $(word 1,$(wildcard ./data ../data))
|
||||||
|
include $(DATA)/Makefile.common
|
||||||
|
OBJS = check_sanity make_kernel_patchfile apply_patchfile
|
||||||
|
all: .settings $(OBJS)
|
||||||
|
%: %.c
|
||||||
|
make -C $(DATA)
|
||||||
|
$(GCC) $(CFLAGS) -o $@ $< -I$(DATA) $(DATA)/libdata.a
|
||||||
|
clean:
|
||||||
|
rm -f $(OBJS)
|
@ -3,6 +3,7 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
|
(void) argc;
|
||||||
struct binary binary;
|
struct binary binary;
|
||||||
b_init(&binary);
|
b_init(&binary);
|
||||||
mode_t mode;
|
mode_t mode;
|
||||||
|
34
check_sanity.c
Normal file
34
check_sanity.c
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include <data/common.h>
|
||||||
|
#include <data/binary.h>
|
||||||
|
#include <data/loader.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
if(argc != 2) {
|
||||||
|
fprintf(stderr, "Usage: check_sanity macho\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
struct binary binary;
|
||||||
|
b_init(&binary);
|
||||||
|
b_load_macho(&binary, argv[1], false);
|
||||||
|
int result = 0;
|
||||||
|
CMD_ITERATE(binary.mach_hdr, cmd) {
|
||||||
|
if(cmd->cmd == LC_SEGMENT) {
|
||||||
|
struct segment_command *seg = (void *) cmd;
|
||||||
|
uint32_t start = seg->vmaddr;
|
||||||
|
uint32_t end = seg->vmaddr + seg->vmsize;
|
||||||
|
|
||||||
|
struct section *sections = (void *) (seg + 1);
|
||||||
|
for(uint32_t i = 0; i < seg->nsects; i++) {
|
||||||
|
struct section *sect = §ions[i];
|
||||||
|
if(!(start <= sect->addr && sect->addr <= end && \
|
||||||
|
start <= (sect->addr + sect->size) && (sect->addr + sect->size) <= end)) {
|
||||||
|
printf("insane: segment %.16s section %d is out of bounds (vmaddr:%x vmsize:%x addr:%x size:%x)\n", seg->segname, i, seg->vmaddr, seg->vmsize, sect->addr, sect->size);
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
@ -174,6 +174,7 @@ void do_kernel(struct binary *binary, struct binary *sandbox) {
|
|||||||
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
|
(void) argc;
|
||||||
struct binary kernel, sandbox;
|
struct binary kernel, sandbox;
|
||||||
b_init(&kernel);
|
b_init(&kernel);
|
||||||
b_init(&sandbox);
|
b_init(&sandbox);
|
||||||
|
Loading…
Reference in New Issue
Block a user