Fix vl_map_shmem() root_path dangling reference. 63/8163/4
authorDave Wallace <dwallacelf@gmail.com>
Tue, 22 Aug 2017 22:32:34 +0000 (18:32 -0400)
committerFlorin Coras <florin.coras@gmail.com>
Wed, 23 Aug 2017 05:10:42 +0000 (05:10 +0000)
Change-Id: I90c9d8e151cacf50a99ce76b7a589079303196e8
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
src/vlibmemory/memory_shared.c

index fbdabd0..8c64690 100644 (file)
@@ -340,15 +340,18 @@ vl_map_shmem (const char *region_name, int is_vlib)
   int i, rv;
   struct timespec ts, tsrem;
   u32 vlib_input_queue_length;
+  char *vpe_api_region_suffix = "-vpe-api";
 
   memset (a, 0, sizeof (*a));
 
-  if (strstr (region_name, "-vpe-api"))
+  if (strstr (region_name, vpe_api_region_suffix))
     {
-      char root_path[strlen (region_name)];
-      strncpy (root_path, region_name, strlen (region_name) - 8);
-      a->root_path = root_path;
-      am->root_path = root_path;
+      u8 *root_path = format (0, "%s", region_name);
+      _vec_len (root_path) = (vec_len (root_path) -
+                             strlen (vpe_api_region_suffix));
+      vec_terminate_c_string (root_path);
+      a->root_path = (const char *) root_path;
+      am->root_path = (const char *) root_path;
     }
 
   if (is_vlib == 0)