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 <[email protected]>
---
 drivers/staging/dgrp/dgrp_dpa_ops.c |    2 +-
 drivers/staging/dgrp/dgrp_net_ops.c |    2 +-
 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 5b7833f..243631c 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 */
 
-- 
1.7.7.6
_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel

Reply via email to