|
|
- From 8614cf0ad4a017184285e814a704322f59a28869 Mon Sep 17 00:00:00 2001
- From: Michael Heimpold <mhei@heimpold.de>
- Date: Wed, 12 Apr 2017 23:36:17 +0200
- Subject: [PATCH] dataxfer.c: fix possible buffer overruns caused by
- gai_strerror
-
- This fixes a possible buffer overrun that could occur due to
- gai_strerror() returning a string which is longer than the portbuff
- array, i.e. longer than 32 byte.
-
- Reported-by: David Thornley <david.thornley@touchstargroup.com>
- Signed-off-by: Michael Heimpold <mhei@heimpold.de>
- Signed-off-by: Corey Minyard <cminyard@mvista.com>
-
- diff --git a/dataxfer.c b/dataxfer.c
- index 3d1e713..988f4e4 100644
- --- a/dataxfer.c
- +++ b/dataxfer.c
- @@ -3702,18 +3702,20 @@ showshortport(struct controller_info *cntlr, port_info_t *port)
- portbuff, sizeof(portbuff),
- NI_NUMERICHOST | NI_NUMERICSERV);
- if (err) {
- - strcpy(buffer, "*err*");
- - sprintf(portbuff, "%s", gai_strerror(err));
- + snprintf(buffer, sizeof(buffer), "*err*,%s", gai_strerror(err));
- + count = controller_outputf(cntlr, "%s", buffer);
- + } else {
- + count = controller_outputf(cntlr, "%s,%s", buffer, portbuff);
- }
- - bytes_recv = netcon->bytes_received;
- - bytes_sent = netcon->bytes_sent;
-
- - count = controller_outputf(cntlr, "%s,%s", buffer, portbuff);
- while (count < 23) {
- controller_outs(cntlr, " ");
- count++;
- }
-
- + bytes_recv = netcon->bytes_received;
- + bytes_sent = netcon->bytes_sent;
- +
- controller_outputf(cntlr, "%-22s ", port->io.devname);
- controller_outputf(cntlr, "%-14s ", state_str[port->net_to_dev_state]);
- controller_outputf(cntlr, "%-14s ", state_str[port->dev_to_net_state]);
- @@ -3758,11 +3760,12 @@ showport(struct controller_info *cntlr, port_info_t *port)
- portbuff, sizeof(portbuff),
- NI_NUMERICHOST | NI_NUMERICSERV);
- if (err) {
- - strcpy(buffer, "*err*");
- - sprintf(portbuff, "%s", gai_strerror(err));
- + snprintf(buffer, sizeof(buffer), "*err*,%s", gai_strerror(err));
- + controller_outputf(cntlr, " connected to: %s\r\n", buffer);
- + } else {
- + controller_outputf(cntlr, " connected to: %s,%s\r\n",
- + buffer, portbuff);
- }
- - controller_outputf(cntlr, " connected to: %s,%s\r\n",
- - buffer, portbuff);
- controller_outputf(cntlr, " bytes read from TCP: %d\r\n",
- netcon->bytes_received);
- controller_outputf(cntlr, " bytes written to TCP: %d\r\n",
- --
- 2.7.4
-
|