Thread (41 messages) 41 messages, 6 authors, 2016-06-27

Re: [PATCH 3/3] app/pdump: fix string overflow

From: Bruce Richardson <hidden>
Date: 2016-06-22 09:21:34

On Wed, Jun 22, 2016 at 12:16:27PM +0530, Anupam Kapoor wrote:
quoted
      if (!strcmp(key, PDUMP_RX_DEV_ARG)) {
-             strncpy(pt->rx_dev, value, strlen(value));
+             strncpy(pt->rx_dev, value, sizeof(pt->rx_dev)-1);
I guess size-1 is to give room for terminating null byte, but for this
case is it guarantied that pt->rx_dev last byte is NULL?

why not just use a snprintf(...) here since it has better error behavior ?
although compared to str*cpy it might be a bit slow, but hopefully that
should be ok ?
Definite +1. For safely copying strings I think snprintf is often the easiest
API to use.

/Bruce
--
thanks
anupam


On Tue, Jun 21, 2016 at 10:51 PM, Ferruh Yigit [off-list ref]
wrote:
quoted
On 6/21/2016 4:18 PM, Reshma Pattan wrote:
quoted
using source length in strncpy can cause destination
overflow if destination length is not big enough to
handle the source string. Changes are made to use destination
size instead of source length in strncpy.

Coverity issue 127351: string overflow

Fixes: caa7028276b8 ("app/pdump: add tool for packet capturing")

Signed-off-by: Reshma Pattan <redacted>
---
 app/pdump/main.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/pdump/main.c b/app/pdump/main.c
index f8923b9..af92ef3 100644
--- a/app/pdump/main.c
+++ b/app/pdump/main.c
@@ -217,12 +217,12 @@ parse_rxtxdev(const char *key, const char *value,
void *extra_args)
quoted
      struct pdump_tuples *pt = extra_args;

      if (!strcmp(key, PDUMP_RX_DEV_ARG)) {
-             strncpy(pt->rx_dev, value, strlen(value));
+             strncpy(pt->rx_dev, value, sizeof(pt->rx_dev)-1);
I guess size-1 is to give room for terminating null byte, but for this
case is it guarantied that pt->rx_dev last byte is NULL?

-- 
In the beginning was the lambda, and the lambda was with Emacs, and Emacs
was the lambda.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help