From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 32434 invoked from network); 12 Apr 2021 19:42:37 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 12 Apr 2021 19:42:37 -0000 Received: (qmail 14000 invoked by uid 550); 12 Apr 2021 19:42:29 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 13965 invoked from network); 12 Apr 2021 19:42:28 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.com; s=mail; t=1618256537; bh=+HzcsSD2EYmRgmJCFrtKhz+37l2evlLua554uWYC7WQ=; h=Subject:To:From:Date:Message-ID; b=wjPc+6hhYk1Ol8Pt2mYtoPR4TNRT8e4TWE9TxgxtV7FPCsBRnsygkfRFF/LYVMHkc uOcB8/6ZlEWUqQYHFSK/CUanosLCXcKDKlBBoxyGdnJVDAs8x7qARxQT3Fx0qCKZHN ggiR7zUZVjP5ptjH6ci9ezzUu1q83rA2QJegPxdA= Authentication-Results: iva4-f37646ae0ac9.qloud-c.yandex.net; dkim=pass header.i=@yandex.com Date: Mon, 12 Apr 2021 19:42:07 +0000 From: Guilherme Janczak To: musl@lists.openwall.com Message-ID: <20210412194207.GF37941@jan-obsd-z87.my.domain> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Subject: [musl] [PATCH] network/: strlcpy instead of strncpy Hello, I'm sending 2 patches that do the same thing to 2 functions. The patches replace strncpy with strlcpy. As you can see neither function ensures null termination after strncpy, but there doesn't seem to be an actual bug in their usage. diff --git a/src/network/if_indextoname.c b/src/network/if_indextoname.c index 3b368bf0..603204cc 100644 --- a/src/network/if_indextoname.c +++ b/src/network/if_indextoname.c @@ -19,5 +19,6 @@ char *if_indextoname(unsigned index, char *name) if (errno == ENODEV) errno = ENXIO; return 0; } - return strncpy(name, ifr.ifr_name, IF_NAMESIZE); + strlcpy(name, ifr.ifr_name, IF_NAMESIZE); + return name; } diff --git a/src/network/if_nametoindex.c b/src/network/if_nametoindex.c index 331413c6..75af31f0 100644 --- a/src/network/if_nametoindex.c +++ b/src/network/if_nametoindex.c @@ -11,7 +11,7 @@ unsigned if_nametoindex(const char *name) int fd, r; if ((fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0)) < 0) return 0; - strncpy(ifr.ifr_name, name, sizeof ifr.ifr_name); + strlcpy(ifr.ifr_name, name, sizeof ifr.ifr_name); r = ioctl(fd, SIOCGIFINDEX, &ifr); __syscall(SYS_close, fd); return r < 0 ? 0 : ifr.ifr_ifindex;