diff mbox series

[net-next] net: driver: hamradio: Fix potential unterminated string

Message ID 20201031181700.1081693-1-andrew@lunn.ch
State New
Headers show
Series [net-next] net: driver: hamradio: Fix potential unterminated string | expand

Commit Message

Andrew Lunn Oct. 31, 2020, 6:17 p.m. UTC
With W=1 the following error is reported:

In function ‘strncpy’,
    inlined from ‘hdlcdrv_ioctl’ at drivers/net/hamradio/hdlcdrv.c:600:4:
./include/linux/string.h:297:30: warning: ‘__builtin_strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
  297 | #define __underlying_strncpy __builtin_strncpy
      |                              ^
./include/linux/string.h:307:9: note: in expansion of macro ‘__underlying_strncpy’
  307 |  return __underlying_strncpy(p, q, size);

Replace strncpy with strlcpy to guarantee the string is terminated.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
 drivers/net/hamradio/hdlcdrv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jakub Kicinski Nov. 3, 2020, 12:11 a.m. UTC | #1
On Sat, 31 Oct 2020 19:17:00 +0100 Andrew Lunn wrote:
> With W=1 the following error is reported:

> 

> In function ‘strncpy’,

>     inlined from ‘hdlcdrv_ioctl’ at drivers/net/hamradio/hdlcdrv.c:600:4:

> ./include/linux/string.h:297:30: warning: ‘__builtin_strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]

>   297 | #define __underlying_strncpy __builtin_strncpy

>       |                              ^

> ./include/linux/string.h:307:9: note: in expansion of macro ‘__underlying_strncpy’

>   307 |  return __underlying_strncpy(p, q, size);

> 

> Replace strncpy with strlcpy to guarantee the string is terminated.

> 

> Signed-off-by: Andrew Lunn <andrew@lunn.ch>


Looks like the longest name in tree is 14, so there should be no
truncation and therefore uAPI change.

Applied, thanks!
diff mbox series

Patch

diff --git a/drivers/net/hamradio/hdlcdrv.c b/drivers/net/hamradio/hdlcdrv.c
index e7413a643929..9e0058154ac3 100644
--- a/drivers/net/hamradio/hdlcdrv.c
+++ b/drivers/net/hamradio/hdlcdrv.c
@@ -597,7 +597,7 @@  static int hdlcdrv_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 
 	case HDLCDRVCTL_DRIVERNAME:
 		if (s->ops && s->ops->drvname) {
-			strncpy(bi.data.drivername, s->ops->drvname, 
+			strlcpy(bi.data.drivername, s->ops->drvname,
 				sizeof(bi.data.drivername));
 			break;
 		}