dvb: Fix sockaddr_un usage
authorEdward Hervey <edward@centricular.com>
Sat, 4 Nov 2017 06:49:24 +0000 (07:49 +0100)
committerEdward Hervey <bilboed@bilboed.com>
Sat, 4 Nov 2017 06:51:14 +0000 (07:51 +0100)
The sun_path field needs to be NULL-terminated

CID #206004

sys/dvb/camswclient.c

index 68a3d43..b631cb1 100644 (file)
@@ -76,7 +76,12 @@ cam_sw_client_open (CamSwClient * client, const char *sock_path)
   g_return_val_if_fail (client != NULL, FALSE);
   g_return_val_if_fail (client->state == CAM_SW_CLIENT_STATE_CLOSED, FALSE);
   g_return_val_if_fail (sock_path != NULL, FALSE);
-  g_return_val_if_fail (strlen (sock_path) >= sizeof (addr.sun_path), FALSE);
+
+  /* sun.path needs to end up NULL-terminated */
+  if (strlen (sock_path) >= (sizeof (addr.sun_path) - 1)) {
+    GST_ERROR ("sock_path is too long");
+    return FALSE;
+  }
 
   addr.sun_family = AF_UNIX;
   strncpy (addr.sun_path, sock_path, sizeof (addr.sun_path));