vhost: show vhost-user <interface> may crash [VPP-1242] 52/11852/2
authorSteven <sluong@cisco.com>
Tue, 17 Apr 2018 15:50:28 +0000 (08:50 -0700)
committerDamjan Marion <dmarion.lists@gmail.com>
Tue, 17 Apr 2018 17:08:36 +0000 (17:08 +0000)
show vhost-user <interface> may cause a crash if interface is semi-bogus.
Semi-bogus means it is a known vpp interface which has a hw_if_index, but
it is bogus because it is not a vhost-user interface.

The fix is to add a check to reject non vhost-user interface for the
command.

Change-Id: I63f1e8bfbf46f5ec4c30f9fb3546982b63cd7cc5
Signed-off-by: Steven <sluong@cisco.com>
src/vnet/devices/virtio/vhost-user.c

index 5460f10..c1fca44 100644 (file)
@@ -3253,6 +3253,13 @@ show_vhost_user_command_fn (vlib_main_t * vm,
       if (unformat
          (input, "%U", unformat_vnet_hw_interface, vnm, &hw_if_index))
        {
+         hi = vnet_get_hw_interface (vnm, hw_if_index);
+         if (vhost_user_dev_class.index != hi->dev_class_index)
+           {
+             error = clib_error_return (0, "unknown input `%U'",
+                                        format_unformat_error, input);
+             goto done;
+           }
          vec_add1 (hw_if_indices, hw_if_index);
        }
       else if (unformat (input, "descriptors") || unformat (input, "desc"))