ssvm->name must be a vector containing a c-string. 59/7859/1
authorDave Wallace <dwallacelf@gmail.com>
Mon, 31 Jul 2017 17:33:11 +0000 (13:33 -0400)
committerDave Wallace <dwallacelf@gmail.com>
Mon, 31 Jul 2017 17:33:11 +0000 (13:33 -0400)
Change-Id: I14a97a7fdd000da62d2ed4bea71f55ee34a21311
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
src/svm/ssvm.c
src/svm/svm_fifo_segment.c

index 23e3cf4..e56e6b4 100644 (file)
@@ -32,6 +32,7 @@ ssvm_master_init (ssvm_private_t * ssvm, u32 master_index)
   if (CLIB_DEBUG > 1)
     clib_warning ("[%d] creating segment '%s'", getpid (), ssvm->name);
 
+  ASSERT (vec_c_string_is_terminated (ssvm->name));
   ssvm_filename = format (0, "/dev/shm/%s%c", ssvm->name, 0);
 
   unlink ((char *) ssvm_filename);
@@ -110,6 +111,7 @@ ssvm_slave_init (ssvm_private_t * ssvm, int timeout_in_seconds)
   int ssvm_fd = -1;
   ssvm_shared_header_t *sh;
 
+  ASSERT (vec_c_string_is_terminated (ssvm->name));
   ssvm->i_am_master = 0;
 
   while (timeout_in_seconds-- > 0)
index a01e26e..86661e5 100644 (file)
@@ -105,7 +105,7 @@ svm_fifo_segment_create (svm_fifo_segment_create_args_t * a)
   s->ssvm.ssvm_size = a->segment_size;
   s->ssvm.i_am_master = 1;
   s->ssvm.my_pid = getpid ();
-  s->ssvm.name = format (0, "%s", a->segment_name);
+  s->ssvm.name = format (0, "%s%c", a->segment_name, 0);
   s->ssvm.requested_va = sm->next_baseva;
 
   rv = ssvm_master_init (&s->ssvm, s - sm->segments);
@@ -192,7 +192,7 @@ svm_fifo_segment_create_process_private (svm_fifo_segment_create_args_t * a)
       s->ssvm.ssvm_size = ~0;
       s->ssvm.i_am_master = 1;
       s->ssvm.my_pid = getpid ();
-      s->ssvm.name = (u8 *) a->segment_name;
+      s->ssvm.name = format (0, "%s%c", a->segment_name, 0);
       s->ssvm.requested_va = ~0;
 
       /* Allocate a [sic] shared memory header, in process memory... */
@@ -240,7 +240,7 @@ svm_fifo_segment_attach (svm_fifo_segment_create_args_t * a)
 
   s->ssvm.ssvm_size = a->segment_size;
   s->ssvm.my_pid = getpid ();
-  s->ssvm.name = (u8 *) a->segment_name;
+  s->ssvm.name = format (0, "%s%c", a->segment_name, 0);
   s->ssvm.requested_va = sm->next_baseva;
 
   rv = ssvm_slave_init (&s->ssvm, sm->timeout_in_seconds);