[aravis] fake_gv_camera: fix memory leak and correctly check for getifaddrs return value.



commit 987c2b8fb29d77c0ba3580dd766285d0c82b6725
Author: Emmanuel Pacaud <emmanuel gnome org>
Date:   Sun Oct 16 20:49:56 2011 +0200

    fake_gv_camera: fix memory leak and correctly check for getifaddrs return value.

 src/arvfakegvcamera.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/src/arvfakegvcamera.c b/src/arvfakegvcamera.c
index 61312b6..d985f69 100644
--- a/src/arvfakegvcamera.c
+++ b/src/arvfakegvcamera.c
@@ -197,7 +197,7 @@ arv_fake_gv_camera_new (const char *interface_name)
 {
 	ArvFakeGvCamera *gv_camera;
 	struct ifaddrs *ifap;
-	int n_interfaces;
+	int return_value;
 	gboolean interface_found = FALSE;
 	gboolean binding_error = FALSE;
 
@@ -206,7 +206,12 @@ arv_fake_gv_camera_new (const char *interface_name)
 	gv_camera = g_new0 (ArvFakeGvCamera, 1);
 	gv_camera->camera = arv_fake_camera_new ("GV01");
 
-	n_interfaces = getifaddrs (&ifap);
+	return_value = getifaddrs (&ifap);
+	if (return_value < 0) {
+		g_warning ("[FakeGvCamera::new] No network interface found");
+		return NULL;
+	}
+
 	for (;ifap != NULL && !interface_found; ifap = ifap->ifa_next) {
 		if ((ifap->ifa_flags & IFF_UP) != 0 &&
 		    (ifap->ifa_flags & IFF_POINTOPOINT) == 0 &&
@@ -280,6 +285,8 @@ arv_fake_gv_camera_new (const char *interface_name)
 		}
 	}
 
+	freeifaddrs (ifap);
+
 	if (binding_error)
 		goto BINDING_ERROR;
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]