mlx4_core: Make buffer larger to avoid overflow warning
authorDan Carpenter <dan.carpenter@oracle.com>
Fri, 28 Mar 2014 08:23:07 +0000 (11:23 +0300)
committerRoland Dreier <roland@purestorage.com>
Tue, 1 Apr 2014 17:53:29 +0000 (10:53 -0700)
My static checker complains that the sprintf() here can overflow.

drivers/infiniband/hw/mlx4/main.c:1836 mlx4_ib_alloc_eqs()
error: format string overflow. buf_size: 32 length: 69

This seems like a valid complaint.  The "dev->pdev->bus->name" string
can be 48 characters long.  I just made the buffer 80 characters instead
of 69 and I changed the sprintf() to snprintf().

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/hw/mlx4/main.c

index 6eb0d442a8057724ce0322f032e36145115343e5..20b4d7a2d3d748170b18a08aacbee8e8016c3a1c 100644 (file)
@@ -1803,7 +1803,7 @@ static void init_pkeys(struct mlx4_ib_dev *ibdev)
 
 static void mlx4_ib_alloc_eqs(struct mlx4_dev *dev, struct mlx4_ib_dev *ibdev)
 {
-       char name[32];
+       char name[80];
        int eq_per_port = 0;
        int added_eqs = 0;
        int total_eqs = 0;
@@ -1833,8 +1833,8 @@ static void mlx4_ib_alloc_eqs(struct mlx4_dev *dev, struct mlx4_ib_dev *ibdev)
        eq = 0;
        mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_IB) {
                for (j = 0; j < eq_per_port; j++) {
-                       sprintf(name, "mlx4-ib-%d-%d@%s",
-                               i, j, dev->pdev->bus->name);
+                       snprintf(name, sizeof(name), "mlx4-ib-%d-%d@%s",
+                                i, j, dev->pdev->bus->name);
                        /* Set IRQ for specific name (per ring) */
                        if (mlx4_assign_eq(dev, name, NULL,
                                           &ibdev->eq_table[eq])) {