Message ID | 20240303-elf2dmp-v1-4-bea6649fe3e6@daynix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | contrib/elf2dmp: Improve robustness | expand |
On Sun, 3 Mar 2024 at 10:52, Akihiko Odaki <akihiko.odaki@daynix.com> wrote: > > This resolved UBSan warnings. > > Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> > --- > contrib/elf2dmp/pdb.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/contrib/elf2dmp/pdb.c b/contrib/elf2dmp/pdb.c > index 40991f5f4c34..2541234205c3 100644 > --- a/contrib/elf2dmp/pdb.c > +++ b/contrib/elf2dmp/pdb.c > @@ -19,6 +19,7 @@ > */ > > #include "qemu/osdep.h" > +#include "qemu/bswap.h" > > #include "pdb.h" > #include "err.h" > @@ -187,7 +188,7 @@ static int pdb_init_symbols(struct pdb_reader *r) > > r->symbols = symbols; > > - r->segments = *(uint16_t *)((const char *)symbols + sizeof(PDB_SYMBOLS) + > + r->segments = lduw_le_p((const char *)symbols + sizeof(PDB_SYMBOLS) + > symbols->module_size + symbols->offset_size + > symbols->hash_size + symbols->srcmodule_size + > symbols->pdbimport_size + symbols->unknown2_size + This is a behaviour change -- previously we did a load in host-endian order, but now we do it in little-endian order. Which is correct? If we need host-endian, then we have lduw_he_p() for that. If we need little-endian, then maybe other parts of the code also are loading data in the wrong endianness? thanks -- PMM
diff --git a/contrib/elf2dmp/pdb.c b/contrib/elf2dmp/pdb.c index 40991f5f4c34..2541234205c3 100644 --- a/contrib/elf2dmp/pdb.c +++ b/contrib/elf2dmp/pdb.c @@ -19,6 +19,7 @@ */ #include "qemu/osdep.h" +#include "qemu/bswap.h" #include "pdb.h" #include "err.h" @@ -187,7 +188,7 @@ static int pdb_init_symbols(struct pdb_reader *r) r->symbols = symbols; - r->segments = *(uint16_t *)((const char *)symbols + sizeof(PDB_SYMBOLS) + + r->segments = lduw_le_p((const char *)symbols + sizeof(PDB_SYMBOLS) + symbols->module_size + symbols->offset_size + symbols->hash_size + symbols->srcmodule_size + symbols->pdbimport_size + symbols->unknown2_size +
This resolved UBSan warnings. Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> --- contrib/elf2dmp/pdb.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)