On Mon, 4 Feb 2019 10:59:43 +0100 Anisse Astier <aastier@xxxxxxxxxx> wrote: > GCC 8.2 gives this warning: > > virtio/net.c: In function ‘virtio_net__tap_init’: > virtio/net.c:336:47: error: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Werror=sizeof-pointer-memaccess] > strncpy(ifr.ifr_name, ndev->tap_name, sizeof(ndev->tap_name)); > ^ > virtio/net.c:348:47: error: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Werror=sizeof-pointer-memaccess] > strncpy(ifr.ifr_name, ndev->tap_name, sizeof(ndev->tap_name)); > ^ > > Fix it by using sizeof of destination instead, even if they're the same > size in this case. > > Signed-off-by: Anisse Astier <aastier@xxxxxxxxxx> Technically using strncpy still leaves the last byte in jeopardy, but in this case it's fine since the buffers are the same size. So: Reviewed-by: Andre Przywara <andre.przywara@xxxxxxx> Cheers, Andre. > --- > virtio/net.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/virtio/net.c b/virtio/net.c > index a05f4cd..35ff2e9 100644 > --- a/virtio/net.c > +++ b/virtio/net.c > @@ -331,7 +331,7 @@ static bool virtio_net__tap_init(struct net_dev *ndev) > goto fail; > } else if (!skipconf) { > memset(&ifr, 0, sizeof(ifr)); > - strncpy(ifr.ifr_name, ndev->tap_name, sizeof(ndev->tap_name)); > + strncpy(ifr.ifr_name, ndev->tap_name, sizeof(ifr.ifr_name)); > sin.sin_addr.s_addr = inet_addr(params->host_ip); > memcpy(&(ifr.ifr_addr), &sin, sizeof(ifr.ifr_addr)); > ifr.ifr_addr.sa_family = AF_INET; > @@ -343,7 +343,7 @@ static bool virtio_net__tap_init(struct net_dev *ndev) > > if (!skipconf) { > memset(&ifr, 0, sizeof(ifr)); > - strncpy(ifr.ifr_name, ndev->tap_name, sizeof(ndev->tap_name)); > + strncpy(ifr.ifr_name, ndev->tap_name, sizeof(ifr.ifr_name)); > ioctl(sock, SIOCGIFFLAGS, &ifr); > ifr.ifr_flags |= IFF_UP | IFF_RUNNING; > if (ioctl(sock, SIOCSIFFLAGS, &ifr) < 0) > @@ -372,7 +372,7 @@ static void virtio_net__tap_exit(struct net_dev *ndev) > return; > > sock = socket(AF_INET, SOCK_STREAM, 0); > - strncpy(ifr.ifr_name, ndev->tap_name, sizeof(ndev->tap_name)); > + strncpy(ifr.ifr_name, ndev->tap_name, sizeof(ifr.ifr_name)); > ioctl(sock, SIOCGIFFLAGS, &ifr); > ifr.ifr_flags &= ~(IFF_UP | IFF_RUNNING); > if (ioctl(sock, SIOCGIFFLAGS, &ifr) < 0)