[libvirt] [PATCH] tests: avoid null pointer dereference

Unlikely to hit in real life, but clang noticed it. * tests/commandtest.c (test4): Avoid unlink(NULL) on OOM. --- Much like a similar patch I sent for qemu_driver, but this time the unlink(NULL) is much harder to trigger. tests/commandtest.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/tests/commandtest.c b/tests/commandtest.c index fa0061c..e8d8858 100644 --- a/tests/commandtest.c +++ b/tests/commandtest.c @@ -240,7 +240,8 @@ static int test4(const void *unused ATTRIBUTE_UNUSED) cleanup: virCommandFree(cmd); - unlink(pidfile); + if (pidfile) + unlink(pidfile); VIR_FREE(pidfile); return ret; } -- 1.7.4.4

On Tue, May 03, 2011 at 10:38:00AM -0600, Eric Blake wrote:
Unlikely to hit in real life, but clang noticed it.
* tests/commandtest.c (test4): Avoid unlink(NULL) on OOM. ---
Much like a similar patch I sent for qemu_driver, but this time the unlink(NULL) is much harder to trigger.
tests/commandtest.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/tests/commandtest.c b/tests/commandtest.c index fa0061c..e8d8858 100644 --- a/tests/commandtest.c +++ b/tests/commandtest.c @@ -240,7 +240,8 @@ static int test4(const void *unused ATTRIBUTE_UNUSED)
cleanup: virCommandFree(cmd); - unlink(pidfile); + if (pidfile) + unlink(pidfile); VIR_FREE(pidfile); return ret; }
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

On 05/03/2011 10:42 AM, Daniel P. Berrange wrote:
On Tue, May 03, 2011 at 10:38:00AM -0600, Eric Blake wrote:
Unlikely to hit in real life, but clang noticed it.
* tests/commandtest.c (test4): Avoid unlink(NULL) on OOM. ---
cleanup: virCommandFree(cmd); - unlink(pidfile); + if (pidfile) + unlink(pidfile); VIR_FREE(pidfile); return ret; }
ACK
Actually, clang found a couple more in the same file. Here's what I finally pushed: diff --git c/tests/commandtest.c w/tests/commandtest.c index fa0061c..caad698 100644 --- c/tests/commandtest.c +++ w/tests/commandtest.c @@ -78,7 +78,8 @@ static int checkoutput(const char *testname) ret = 0; cleanup: - unlink(actualname); + if (actualname) + unlink(actualname); VIR_FREE(actuallog); VIR_FREE(actualname); VIR_FREE(expectlog); @@ -240,7 +241,8 @@ static int test4(const void *unused ATTRIBUTE_UNUSED) cleanup: virCommandFree(cmd); - unlink(pidfile); + if (pidfile) + unlink(pidfile); VIR_FREE(pidfile); return ret; } @@ -703,7 +705,8 @@ static int test18(const void *unused ATTRIBUTE_UNUSED) cleanup: virCommandFree(cmd); - unlink(pidfile); + if (pidfile) + unlink(pidfile); VIR_FREE(pidfile); return ret; } -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org
participants (2)
-
Daniel P. Berrange
-
Eric Blake