shmpipe: Ensure string received from recv() is NULL-terminated
authorEdward Hervey <edward@centricular.com>
Mon, 20 Apr 2015 12:20:05 +0000 (14:20 +0200)
committerEdward Hervey <bilboed@bilboed.com>
Mon, 20 Apr 2015 12:21:09 +0000 (14:21 +0200)
We will be doing string operations on it later.

CID #1292830

sys/shm/shmpipe.c

index 0d7bf26..de89026 100644 (file)
@@ -669,13 +669,15 @@ sp_client_recv (ShmPipe * self, char **buf)
       assert (cb.payload.new_shm_area.path_size > 0);
       assert (cb.payload.new_shm_area.size > 0);
 
-      area_name = malloc (cb.payload.new_shm_area.path_size);
+      area_name = malloc (cb.payload.new_shm_area.path_size + 1);
       retval = recv (self->main_socket, area_name,
           cb.payload.new_shm_area.path_size, 0);
       if (retval != cb.payload.new_shm_area.path_size) {
         free (area_name);
         return -3;
       }
+      /* Ensure area_name is NULL terminated */
+      area_name[retval] = 0;
 
       newarea = sp_open_shm (area_name, cb.area_id, 0,
           cb.payload.new_shm_area.size);