Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

staging: for dgrp, let nd_ps_desc always NUL terminated string within MAX_DESC_LEN length

Use strlcpy instead of strncpy to let nd_ps_desc always NUL terminated.

Change nd_ps_desc in nd_struct struct to MAX_DESC_LEN to avoid the
confusion (the related length checking also need be changed to
MAX_DESC_LEN - 1).

Signed-off-by: Chen Gang <gang.chen@asianux.com>
Acked-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Chen Gang and committed by
Greg Kroah-Hartman
0f6e8aab 205179d0

+3 -3
+1 -1
drivers/staging/dgrp/dgrp_dpa_ops.c
··· 392 392 getnode.nd_rx_byte = nd->nd_rx_byte; 393 393 394 394 memset(&getnode.nd_ps_desc, 0, MAX_DESC_LEN); 395 - strncpy(getnode.nd_ps_desc, nd->nd_ps_desc, MAX_DESC_LEN); 395 + strlcpy(getnode.nd_ps_desc, nd->nd_ps_desc, MAX_DESC_LEN); 396 396 397 397 if (copy_to_user(uarg, &getnode, sizeof(struct digi_node))) 398 398 return -EFAULT;
+1 -1
drivers/staging/dgrp/dgrp_net_ops.c
··· 3083 3083 nd->nd_hw_ver = (b[8] << 8) | b[9]; 3084 3084 nd->nd_sw_ver = (b[10] << 8) | b[11]; 3085 3085 nd->nd_hw_id = b[6]; 3086 - desclen = ((plen - 12) > MAX_DESC_LEN) ? MAX_DESC_LEN : 3086 + desclen = (plen - 12 > MAX_DESC_LEN - 1) ? MAX_DESC_LEN - 1 : 3087 3087 plen - 12; 3088 3088 3089 3089 if (desclen <= 0) {
+1 -1
drivers/staging/dgrp/drp.h
··· 674 674 ushort nd_hw_ver; /* HW version returned from PS */ 675 675 ushort nd_sw_ver; /* SW version returned from PS */ 676 676 uint nd_hw_id; /* HW ID returned from PS */ 677 - u8 nd_ps_desc[MAX_DESC_LEN+1]; /* Description from PS */ 677 + u8 nd_ps_desc[MAX_DESC_LEN]; /* Description from PS */ 678 678 uint nd_vpd_len; /* VPD len, if any */ 679 679 u8 nd_vpd[VPDSIZE]; /* VPD, if any */ 680 680