Eliminate a possbility to cause segfault
This commit is contained in:
parent
022b18c8ce
commit
84ffdf0ed5
@ -29,7 +29,7 @@ struct vector *vec_dup(struct vector *v);
|
|||||||
for (int _ = 0; v && _ < (v)->size; ++_, e = (v)->data[_])
|
for (int _ = 0; v && _ < (v)->size; ++_, e = (v)->data[_])
|
||||||
|
|
||||||
#define vec_for_each_r(v, e) \
|
#define vec_for_each_r(v, e) \
|
||||||
e = v ? (v)->data[(v)->size - 1] : NULL; \
|
e = (v && (v)->size > 0) ? (v)->data[(v)->size - 1] : NULL; \
|
||||||
for (int _ = ((int) (v)->size) - 1; v && _ >= 0; --_, e = (v)->data[_])
|
for (int _ = ((int) (v)->size) - 1; v && _ >= 0; --_, e = (v)->data[_])
|
||||||
|
|
||||||
#define vec_cur(v) vec_entry(v)[_]
|
#define vec_cur(v) vec_entry(v)[_]
|
||||||
|
@ -49,7 +49,7 @@ static void dtb_dump(const char *file) {
|
|||||||
for (int i = 0; i < size; ++i) {
|
for (int i = 0; i < size; ++i) {
|
||||||
if (memcmp(dtb + i, DTB_MAGIC, 4) == 0) {
|
if (memcmp(dtb + i, DTB_MAGIC, 4) == 0) {
|
||||||
fdt = dtb + i;
|
fdt = dtb + i;
|
||||||
fprintf(stderr, "Dumping dtb.%04d\n\n", dtb_num++);
|
fprintf(stderr, "Dumping dtb.%04d\n", dtb_num++);
|
||||||
print_subnode(fdt, 0, 0);
|
print_subnode(fdt, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -61,7 +61,7 @@ static void dtb_dump(const char *file) {
|
|||||||
static void dtb_patch(const char *file, int patch) {
|
static void dtb_patch(const char *file, int patch) {
|
||||||
size_t size ;
|
size_t size ;
|
||||||
void *dtb, *fdt;
|
void *dtb, *fdt;
|
||||||
fprintf(stderr, "Loading dtbs from [%s]\n\n", file);
|
fprintf(stderr, "Loading dtbs from [%s]\n", file);
|
||||||
if (patch)
|
if (patch)
|
||||||
mmap_rw(file, &dtb, &size);
|
mmap_rw(file, &dtb, &size);
|
||||||
else
|
else
|
||||||
@ -84,7 +84,6 @@ static void dtb_patch(const char *file, int patch) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fprintf(stderr, "\n");
|
|
||||||
munmap(dtb, size);
|
munmap(dtb, size);
|
||||||
exit(!found);
|
exit(!found);
|
||||||
}
|
}
|
||||||
|
@ -57,9 +57,9 @@ void cpio_vec_insert(struct vector *v, cpio_entry *n) {
|
|||||||
|
|
||||||
// Parse cpio file to a vector of cpio_entry
|
// Parse cpio file to a vector of cpio_entry
|
||||||
void parse_cpio(struct vector *v, const char *filename) {
|
void parse_cpio(struct vector *v, const char *filename) {
|
||||||
fprintf(stderr, "Loading cpio: [%s]\n", filename);
|
|
||||||
int fd = open(filename, O_RDONLY);
|
int fd = open(filename, O_RDONLY);
|
||||||
if (fd < 0) return;
|
if (fd < 0) return;
|
||||||
|
fprintf(stderr, "Loading cpio: [%s]\n", filename);
|
||||||
cpio_newc_header header;
|
cpio_newc_header header;
|
||||||
cpio_entry *f;
|
cpio_entry *f;
|
||||||
while(xxread(fd, &header, 110) != -1) {
|
while(xxread(fd, &header, 110) != -1) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user