Message ID | 20170221141451.28305-21-marcandre.lureau@redhat.com |
---|---|
State | New |
Headers | show |
Marc-André Lureau <marcandre.lureau@redhat.com> writes: > Spotted by ASAN. > > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> > --- > tests/e1000e-test.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/tests/e1000e-test.c b/tests/e1000e-test.c > index 8c42ca919f..c612dc64ec 100644 > --- a/tests/e1000e-test.c > +++ b/tests/e1000e-test.c > @@ -99,7 +99,10 @@ static QPCIBus *test_bus; > > static void e1000e_pci_foreach_callback(QPCIDevice *dev, int devfn, void *data) > { > - *(QPCIDevice **) data = dev; > + QPCIDevice **res = data; > + > + g_assert_null(*res); > + *res = dev; > } > > static QPCIDevice *e1000e_device_find(QPCIBus *bus) { static const int e1000e_vendor_id = 0x8086; static const int e1000e_dev_id = 0x10D3; QPCIDevice *e1000e_dev = NULL; qpci_device_foreach(bus, e1000e_vendor_id, e1000e_dev_id, e1000e_pci_foreach_callback, &e1000e_dev); This hunk adds an assertion. I guess it checks that we're finding no more than one e1000e device. The connection to the stated purpose of this patch isn't obvious, but I think I got it: each hit allocates, but you have only one g_free(), below. Okay, but explaining this briefly the commit message wouldn't hurt. > @@ -403,6 +406,7 @@ static void data_test_clear(e1000e_device *d) > e1000e_device_clear(test_bus, d); > close(test_sockets[0]); > pc_alloc_uninit(test_alloc); > + g_free(d->pci_dev); > qpci_free_pc(test_bus); > qtest_end(); > } Reviewed-by: Markus Armbruster <armbru@redhat.com>
diff --git a/tests/e1000e-test.c b/tests/e1000e-test.c index 8c42ca919f..c612dc64ec 100644 --- a/tests/e1000e-test.c +++ b/tests/e1000e-test.c @@ -99,7 +99,10 @@ static QPCIBus *test_bus; static void e1000e_pci_foreach_callback(QPCIDevice *dev, int devfn, void *data) { - *(QPCIDevice **) data = dev; + QPCIDevice **res = data; + + g_assert_null(*res); + *res = dev; } static QPCIDevice *e1000e_device_find(QPCIBus *bus) @@ -403,6 +406,7 @@ static void data_test_clear(e1000e_device *d) e1000e_device_clear(test_bus, d); close(test_sockets[0]); pc_alloc_uninit(test_alloc); + g_free(d->pci_dev); qpci_free_pc(test_bus); qtest_end(); }
Spotted by ASAN. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- tests/e1000e-test.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)