diff options
author | Chen Gang <gang.chen@asianux.com> | 2013-05-02 09:05:28 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-05-13 22:08:16 (GMT) |
commit | 0f6e8aab94035f5a649195a2179813bc3db98272 (patch) | |
tree | 31e988ba451f2312af345effbd683ff02629f96a | |
parent | 205179d0c02cb3f59eda77d3e6cc895b7d4b06bd (diff) | |
download | linux-0f6e8aab94035f5a649195a2179813bc3db98272.tar.xz |
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>
-rw-r--r-- | drivers/staging/dgrp/dgrp_dpa_ops.c | 2 | ||||
-rw-r--r-- | drivers/staging/dgrp/dgrp_net_ops.c | 2 | ||||
-rw-r--r-- | drivers/staging/dgrp/drp.h | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/drivers/staging/dgrp/dgrp_dpa_ops.c b/drivers/staging/dgrp/dgrp_dpa_ops.c index 114799c..69bfe30 100644 --- a/drivers/staging/dgrp/dgrp_dpa_ops.c +++ b/drivers/staging/dgrp/dgrp_dpa_ops.c @@ -392,7 +392,7 @@ static long dgrp_dpa_ioctl(struct file *file, unsigned int cmd, getnode.nd_rx_byte = nd->nd_rx_byte; memset(&getnode.nd_ps_desc, 0, MAX_DESC_LEN); - strncpy(getnode.nd_ps_desc, nd->nd_ps_desc, MAX_DESC_LEN); + strlcpy(getnode.nd_ps_desc, nd->nd_ps_desc, MAX_DESC_LEN); if (copy_to_user(uarg, &getnode, sizeof(struct digi_node))) return -EFAULT; diff --git a/drivers/staging/dgrp/dgrp_net_ops.c b/drivers/staging/dgrp/dgrp_net_ops.c index 6cf7672..7a0d72d 100644 --- a/drivers/staging/dgrp/dgrp_net_ops.c +++ b/drivers/staging/dgrp/dgrp_net_ops.c @@ -3083,7 +3083,7 @@ check_query: nd->nd_hw_ver = (b[8] << 8) | b[9]; nd->nd_sw_ver = (b[10] << 8) | b[11]; nd->nd_hw_id = b[6]; - desclen = ((plen - 12) > MAX_DESC_LEN) ? MAX_DESC_LEN : + desclen = (plen - 12 > MAX_DESC_LEN - 1) ? MAX_DESC_LEN - 1 : plen - 12; if (desclen <= 0) { diff --git a/drivers/staging/dgrp/drp.h b/drivers/staging/dgrp/drp.h index 84a1e7b..4024b48 100644 --- a/drivers/staging/dgrp/drp.h +++ b/drivers/staging/dgrp/drp.h @@ -674,7 +674,7 @@ struct nd_struct { ushort nd_hw_ver; /* HW version returned from PS */ ushort nd_sw_ver; /* SW version returned from PS */ uint nd_hw_id; /* HW ID returned from PS */ - u8 nd_ps_desc[MAX_DESC_LEN+1]; /* Description from PS */ + u8 nd_ps_desc[MAX_DESC_LEN]; /* Description from PS */ uint nd_vpd_len; /* VPD len, if any */ u8 nd_vpd[VPDSIZE]; /* VPD, if any */ |