aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@oracle.com>2013-01-17 16:46:18 -0500
committerDavid S. Miller <davem@davemloft.net>2013-01-18 14:34:48 -0500
commit4505f40a6f1a6a1bb8f8ef84a4a35263d64b5125 (patch)
treec24a2640af41309c22d32f21ab4332ec6d52ce9d
parent6b80778d3d7424b8f0a45052742d065ec491abd8 (diff)
enic: change sprintf() to snprintf()
These are copying data into 16 char arrays. They all specify that the first string can't be more than 11 characters but once you add on the "-rx-" and the NUL character there isn't space for the %d. The first string is probably never going to be 11 characters, but if it is then let's truncate the string instead of corrupting memory. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/cisco/enic/enic_main.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
index ebccebff1437..ec1a233622c6 100644
--- a/drivers/net/ethernet/cisco/enic/enic_main.c
+++ b/drivers/net/ethernet/cisco/enic/enic_main.c
@@ -1490,7 +1490,8 @@ static int enic_request_intr(struct enic *enic)
1490 1490
1491 for (i = 0; i < enic->rq_count; i++) { 1491 for (i = 0; i < enic->rq_count; i++) {
1492 intr = enic_msix_rq_intr(enic, i); 1492 intr = enic_msix_rq_intr(enic, i);
1493 sprintf(enic->msix[intr].devname, 1493 snprintf(enic->msix[intr].devname,
1494 sizeof(enic->msix[intr].devname),
1494 "%.11s-rx-%d", netdev->name, i); 1495 "%.11s-rx-%d", netdev->name, i);
1495 enic->msix[intr].isr = enic_isr_msix_rq; 1496 enic->msix[intr].isr = enic_isr_msix_rq;
1496 enic->msix[intr].devid = &enic->napi[i]; 1497 enic->msix[intr].devid = &enic->napi[i];
@@ -1498,20 +1499,23 @@ static int enic_request_intr(struct enic *enic)
1498 1499
1499 for (i = 0; i < enic->wq_count; i++) { 1500 for (i = 0; i < enic->wq_count; i++) {
1500 intr = enic_msix_wq_intr(enic, i); 1501 intr = enic_msix_wq_intr(enic, i);
1501 sprintf(enic->msix[intr].devname, 1502 snprintf(enic->msix[intr].devname,
1503 sizeof(enic->msix[intr].devname),
1502 "%.11s-tx-%d", netdev->name, i); 1504 "%.11s-tx-%d", netdev->name, i);
1503 enic->msix[intr].isr = enic_isr_msix_wq; 1505 enic->msix[intr].isr = enic_isr_msix_wq;
1504 enic->msix[intr].devid = enic; 1506 enic->msix[intr].devid = enic;
1505 } 1507 }
1506 1508
1507 intr = enic_msix_err_intr(enic); 1509 intr = enic_msix_err_intr(enic);
1508 sprintf(enic->msix[intr].devname, 1510 snprintf(enic->msix[intr].devname,
1511 sizeof(enic->msix[intr].devname),
1509 "%.11s-err", netdev->name); 1512 "%.11s-err", netdev->name);
1510 enic->msix[intr].isr = enic_isr_msix_err; 1513 enic->msix[intr].isr = enic_isr_msix_err;
1511 enic->msix[intr].devid = enic; 1514 enic->msix[intr].devid = enic;
1512 1515
1513 intr = enic_msix_notify_intr(enic); 1516 intr = enic_msix_notify_intr(enic);
1514 sprintf(enic->msix[intr].devname, 1517 snprintf(enic->msix[intr].devname,
1518 sizeof(enic->msix[intr].devname),
1515 "%.11s-notify", netdev->name); 1519 "%.11s-notify", netdev->name);
1516 enic->msix[intr].isr = enic_isr_msix_notify; 1520 enic->msix[intr].isr = enic_isr_msix_notify;
1517 enic->msix[intr].devid = enic; 1521 enic->msix[intr].devid = enic;