Use strscpy instead of strncpy.
authorHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Mon, 22 Oct 2012 13:06:57 +0000 (15:06 +0200)
committerHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Mon, 22 Oct 2012 13:06:57 +0000 (15:06 +0200)
    Coverity:

    CID 739613 (#1 of 1): Buffer not null terminated (BUFFER_SIZE_WARNING)
    At (6): Calling strncpy with a maximum size argument of 16 bytes on destination array "t->if_name" of size 16 bytes might leave the destination string unterminated.

    CID 739614 (#1 of 3): Buffer not null terminated (BUFFER_SIZE_WARNING)
    At (4): Calling strncpy with a maximum size argument of 16 bytes on destination array "p4.name" of size 16 bytes might leave the destination string unterminated.

    CID 739614 (#2 of 3): Buffer not null terminated (BUFFER_SIZE_WARNING)
    At (4): Calling strncpy with a maximum size argument of 16 bytes on destination array "p6.name" of size 16 bytes might leave the destination string unterminated.

    CID 739614 (#3 of 3): Buffer not null terminated (BUFFER_SIZE_WARNING)
    At (5): Calling strncpy with a maximum size argument of 16 bytes on destination array "ifr.ifr_ifrn.ifrn_name" of size 16 bytes might leave the destination string unterminated.

Signed-off-by: Henning Rogge <henning.rogge@fkie.fraunhofer.de>
src/linux/kernel_tunnel.c

index 88fedc5..0522ae0 100644 (file)
@@ -150,7 +150,7 @@ static int os_ip_tunnel(const char *name, void *target) {
                if (target) {
                        p4.iph.daddr = *((in_addr_t *) target);
                }
-               strncpy(p4.name, name, IFNAMSIZ);
+               strscpy(p4.name, name, IFNAMSIZ);
        } else {
 #ifdef LINUX_IPV6_TUNNEL
                p = (void *) &p6;
@@ -160,13 +160,13 @@ static int os_ip_tunnel(const char *name, void *target) {
                if (target) {
                        p6.raddr = *((struct in6_addr *) target);
                }
-               strncpy(p6.name, name, IFNAMSIZ);
+               strscpy(p6.name, name, IFNAMSIZ);
 #else /* LINUX_IPV6_TUNNEL */
                return 0;
 #endif /* LINUX_IPV6_TUNNEL */
        }
 
-       strncpy(ifr.ifr_name, name, IFNAMSIZ);
+       strscpy(ifr.ifr_name, name, IFNAMSIZ);
        ifr.ifr_ifru.ifru_data = p;
 
        if ((err = ioctl(olsr_cnf->ioctl_s, target != NULL ? SIOCADDTUNNEL : SIOCDELTUNNEL, &ifr))) {
@@ -234,7 +234,7 @@ struct olsr_iptunnel_entry *olsr_os_add_ipip_tunnel(union olsr_ip_addr *target,
     memcpy(&t->target, target, sizeof(*target));
     t->node.key = &t->target;
 
-    strncpy(t->if_name, name, IFNAMSIZ);
+    strscpy(t->if_name, name, IFNAMSIZ);
     t->if_index = if_idx;
 
     avl_insert(&tunnel_tree, &t->node, AVL_DUP_NO);