static int check(RBin *bin) { int size = 0, ret = false; ut8 *filebuf = (ut8*)r_file_slurp_range (bin->file, 0, 4, &size); ret = check_bytes (filebuf, size); free (filebuf); return ret; }
/* Check the pad bytes at the end of a slab page */ static int slab_pad_check(struct kmem_cache *s, struct page *page) { u8 *start; u8 *fault; u8 *end; int length; int remainder; if (!(s->flags & SLAB_POISON)) return 1; start = page_address(page); length = (PAGE_SIZE << compound_order(page)) - s->reserved; end = start + length; remainder = length % s->size; if (!remainder) return 1; fault = check_bytes(end - remainder, POISON_INUSE, remainder); if (!fault) return 1; while (end > fault && end[-1] == POISON_INUSE) end--; slab_err(s, page, "Padding overwritten. 0x%p-0x%p", fault, end - 1); print_section("Padding", end - remainder, remainder); restore_bytes(s, "slab padding", POISON_INUSE, end - remainder, end); return 0; }
static int load(RBinFile *arch) { const ut8 *bytes = arch ? r_buf_buffer (arch->buf) : NULL; ut64 sz = arch ? r_buf_size (arch->buf): 0; if (!arch || !arch->o) return R_FALSE; arch->o->bin_obj = load_bytes (bytes, sz, arch->o->loadaddr, arch->sdb); return check_bytes (bytes, sz); }
int main(void) { void *addr; int fd, ret; fd = open(FILE_NAME, O_CREAT | O_RDWR, 0755); if (fd < 0) { perror("Open failed"); exit(1); } addr = mmap(ADDR, LENGTH, PROTECTION, FLAGS, fd, 0); if (addr == MAP_FAILED) { perror("mmap"); unlink(FILE_NAME); exit(1); } printf("Returned address is %p\n", addr); check_bytes(addr); write_bytes(addr); ret = read_bytes(addr); munmap(addr, LENGTH); close(fd); unlink(FILE_NAME); return ret; }
static bool load_bytes(RBinFile *bf, void **bin_obj, const ut8 *buf, ut64 sz, ut64 loadaddr, Sdb *sdb) { if (check_bytes (buf, sz)) { *bin_obj = memcpy (&n64_header, buf, sizeof (N64Header)); return true; } return false; }
static int check(RBinFile *arch) { if (arch && arch->buf) { const ut8 *bytes = r_buf_buffer (arch->buf); ut64 sz = r_buf_size (arch->buf); return check_bytes (bytes, sz); } return false; }
static bool load(RBinFile *arch) { const ut8 *bytes = arch? r_buf_buffer (arch->buf): NULL; ut64 sz = arch? r_buf_size (arch->buf): 0; if (!arch || !arch->o) { return false; } arch->rbin->maxstrbuf = 0x20000000; return check_bytes (bytes, sz); }
static bool load(RBinFile *bf) { if (!bf || !bf->o) { return false; } ut64 sz; const ut8 *bytes = r_buf_buffer (bf->buf, &sz); load_bytes (bf, &bf->o->bin_obj, bytes, sz, bf->o->loadaddr, bf->sdb); return check_bytes (bytes, sz); }
static int check(RBinFile *arch) { const ut8 *bytes = arch ? r_buf_buffer (arch->buf) : NULL; const ut64 size = arch ? r_buf_size (arch->buf) : 0; if (!arch || !arch->o || !bytes) return false; return check_bytes(bytes, size); }
static bool load(RBinFile *bf) { const ut8 *bytes = bf? r_buf_buffer (bf->buf): NULL; ut64 sz = bf? r_buf_size (bf->buf): 0; if (!bf || !bf->o) { return false; } bf->o->bin_obj = load_bytes (bf, bytes, sz, bf->o->loadaddr, bf->sdb); return check_bytes (bytes, sz); }
static void *load_bytes(RBinFile *bf, const ut8 *buf, ut64 sz, ut64 loadaddr, Sdb *sdb){ if (!buf || !sz || sz == UT64_MAX) { return NULL; } if (!check_bytes (buf, sz)) { return NULL; } return r_bin_wasm_init (bf); }
static void read_bytes(char *addr) { unsigned long i; check_bytes(addr); for (i = 0; i < LENGTH; i++) if (*(addr + i) != (char)i) { printf("Mismatch at %lu\n", i); break; } }
static int read_bytes(char *addr) { unsigned long i; check_bytes(addr); for (i = 0; i < LENGTH; i++) if (*(addr + i) != (char)i) { printf("Mismatch at %lu\n", i); return 1; } return 0; }
int main(void) { void *addr; int ret; addr = mmap(ADDR, LENGTH, PROTECTION, FLAGS, 0, 0); if (addr == MAP_FAILED) { perror("mmap"); exit(1); } printf("Returned address is %p\n", addr); check_bytes(addr); write_bytes(addr); ret = read_bytes(addr); munmap(addr, LENGTH); return ret; }
static int check_bytes_and_report(struct kmem_cache *s, struct page *page, u8 *object, char *what, u8 *start, unsigned int value, unsigned int bytes) { u8 *fault; u8 *end; fault = check_bytes(start, value, bytes); if (!fault) return 1; end = start + bytes; while (end > fault && end[-1] == value) end--; slab_bug(s, "%s overwritten", what); printk(KERN_ERR "INFO: 0x%p-0x%p. First byte 0x%x instead of 0x%x\n", fault, end - 1, fault[0], value); print_trailer(s, page, object); restore_bytes(s, what, value, fault, end); return 0; }
static void * load_bytes(RBinFile *arch, const ut8 *buf, ut64 sz, ut64 loadaddr, Sdb *sdb){ check_bytes (buf, sz); // XXX: this may be wrong if check_bytes is true return R_NOTNULL; }
static void * load_bytes(RBinFile *arch, const ut8 *buf, ut64 sz, ut64 loadaddr, Sdb *sdb){ return (void*)(size_t)check_bytes (buf, sz); }
static bool load(RBinFile *arch) { ut64 sz; const ut8 *bytes = arch ? r_buf_buffer (arch->buf, &sz) : NULL; return check_bytes (bytes, sz); }
static bool load_bytes(RBinFile *bf, void **bin_obj, const ut8 *buf, ut64 sz, ut64 loadaddr, Sdb *sdb){ return (bool)(void*)(size_t)check_bytes (buf, sz); }
static void *load_bytes(RBinFile *bf, const ut8 *buf, ut64 sz, ut64 loadaddr, Sdb *sdb) { if (check_bytes (r_buf_buffer (bf->buf), sz)) { return memcpy (&n64_header, buf, sizeof (N64Header)); } return NULL; }
static void * load_bytes(RBinFile *arch, const ut8 *buf, ut64 sz, ut64 loadaddr, Sdb *sdb){ if (check_bytes (buf, sz)) return R_NOTNULL; return NULL; }
static void * load_bytes(const ut8 *buf, ut64 sz, ut64 loadaddr, Sdb *sdb){ return check_bytes (buf, sz); }
static int load(RBinFile *arch) { const ut8 *bytes = arch ? r_buf_buffer (arch->buf) : NULL; ut64 sz = arch ? r_buf_size (arch->buf): 0; return check_bytes (bytes, sz); }
static int check(RBinFile *arch) { const ut8 *bytes = arch ? r_buf_buffer (arch->buf) : NULL; eprintf ("CHE2\n"); ut64 sz = arch ? r_buf_size (arch->buf): 0; return check_bytes (bytes, sz); }
static void * load_bytes(RBinFile *bf, const ut8 *buf, ut64 sz, ut64 loadaddr, Sdb *sdb){ check_bytes (buf, sz); return R_NOTNULL; }
static int check(RBinFile *arch) { if (!arch || !arch->buf) { return false; } return check_bytes (r_buf_buffer (arch->buf), r_buf_size (arch->buf)); }