Reviewed-by: Kostiantyn Kostiuk <kkost...@redhat.com> @Thomas Huth <th...@redhat.com> Is this fix critical to merge during code freeze?
On Wed, Jul 30, 2025 at 10:27 AM Thomas Huth <th...@redhat.com> wrote: > From: Thomas Huth <th...@redhat.com> > > When compiling QEMU with --enable-ubsan there is a undefined behavior > warning when running "make check": > > .../qga/commands-linux.c:452:15: runtime error: applying non-zero offset > 5 to null pointer > #0 0x55ea7b89450c in build_guest_fsinfo_for_pci_dev > ..../qga/commands-linux.c:452:15 > > Fix it by avoiding the additional pointer variable here and use an > "offset" integer variable instead. > > Signed-off-by: Thomas Huth <th...@redhat.com> > --- > v2: Use an integer offset variable instead for checking for a NULL pointer > > qga/commands-linux.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/qga/commands-linux.c b/qga/commands-linux.c > index 9e8a934b9a6..0c41eb97190 100644 > --- a/qga/commands-linux.c > +++ b/qga/commands-linux.c > @@ -400,10 +400,10 @@ static bool build_guest_fsinfo_for_pci_dev(char > const *syspath, > Error **errp) > { > unsigned int pci[4], host, hosts[8], tgt[3]; > - int i, nhosts = 0, pcilen; > + int i, offset, nhosts = 0, pcilen; > GuestPCIAddress *pciaddr = disk->pci_controller; > bool has_ata = false, has_host = false, has_tgt = false; > - char *p, *q, *driver = NULL; > + char *p, *driver = NULL; > bool ret = false; > > p = strstr(syspath, "/devices/pci"); > @@ -445,13 +445,13 @@ static bool build_guest_fsinfo_for_pci_dev(char > const *syspath, > > p = strstr(syspath, "/ata"); > if (p) { > - q = p + 4; > + offset = 4; > has_ata = true; > } else { > p = strstr(syspath, "/host"); > - q = p + 5; > + offset = 5; > } > - if (p && sscanf(q, "%u", &host) == 1) { > + if (p && sscanf(p + offset, "%u", &host) == 1) { > has_host = true; > nhosts = build_hosts(syspath, p, has_ata, hosts, > ARRAY_SIZE(hosts), errp); > -- > 2.50.1 > >