diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-03-22 11:50:30 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-03-22 11:50:30 +0100 |
commit | d859a24f7d1dca2aed4e69330124e52d674d1589 (patch) | |
tree | 2c89e4f0de072bee6d582c80da3249b0cb1ee431 /openbsc/src/ipaccess | |
parent | 38722cca48771a791c08bd4911c208520e4eb627 (diff) |
ipa-firmware: Fix the write out of the firmware parts
Use the start address inside the header entry, the start is relative
to the surrounding SDP record which is located in our base offset, when
writing it out also ignore four bytes of something (crc?).
Diffstat (limited to 'openbsc/src/ipaccess')
-rw-r--r-- | openbsc/src/ipaccess/ipaccess-config.c | 2 | ||||
-rw-r--r-- | openbsc/src/ipaccess/ipaccess-firmware.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/openbsc/src/ipaccess/ipaccess-config.c b/openbsc/src/ipaccess/ipaccess-config.c index 33dd82a4f..93fe44236 100644 --- a/openbsc/src/ipaccess/ipaccess-config.c +++ b/openbsc/src/ipaccess/ipaccess-config.c @@ -496,7 +496,7 @@ static void dump_entry(struct sdp_header_item *sub_entry, int part, int fd) return; } - target = sub_entry->absolute_offset; + target = sub_entry->absolute_offset + ntohl(sub_entry->header_entry.start) + 4; if (lseek(fd, target, SEEK_SET) != target) { perror("seek failed"); close(out_fd); diff --git a/openbsc/src/ipaccess/ipaccess-firmware.c b/openbsc/src/ipaccess/ipaccess-firmware.c index d1004ea9e..bc40c1e47 100644 --- a/openbsc/src/ipaccess/ipaccess-firmware.c +++ b/openbsc/src/ipaccess/ipaccess-firmware.c @@ -117,7 +117,7 @@ int ipaccess_analyze_file(int fd, const unsigned int st_size, const unsigned int header_entry = talloc_zero(header, struct sdp_header_item); header_entry->header_entry = entry; - header_entry->absolute_offset = lseek(fd, 0, SEEK_CUR); + header_entry->absolute_offset = base_offset; llist_add(&header_entry->entry, &header->header_list); /* now we need to find the SDP file... */ |