Gentoo Archives: gentoo-commits

From: Mike Frysinger <vapier@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/net-tools:gentoo commit in: lib/
Date: Mon, 21 Nov 2011 01:39:10
Message-Id: 7ae4aa5619cc7e7067ea6ee24a4d49fa5b4a72fd.vapier@gentoo
1 commit: 7ae4aa5619cc7e7067ea6ee24a4d49fa5b4a72fd
2 Author: Mike Frysinger <vapier <AT> gentoo <DOT> org>
3 AuthorDate: Mon Nov 21 00:08:37 2011 +0000
4 Commit: Mike Frysinger <vapier <AT> gentoo <DOT> org>
5 CommitDate: Mon Nov 21 00:11:56 2011 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/net-tools.git;a=commit;h=7ae4aa56
7
8 get_sname: avoid buffer overflows if proto name is too long
9
10 Signed-off-by: Mike Frysinger <vapier <AT> gentoo.org>
11
12 ---
13 lib/inet.c | 21 +++++++++++----------
14 1 files changed, 11 insertions(+), 10 deletions(-)
15
16 diff --git a/lib/inet.c b/lib/inet.c
17 index 073c8a3..60e55df 100644
18 --- a/lib/inet.c
19 +++ b/lib/inet.c
20 @@ -431,16 +431,17 @@ const char *get_sname(int socknumber, const char *proto, int numeric)
21 init = 1;
22 }
23 buffer[0] = '\0';
24 - if (!strcmp(proto, "tcp")) {
25 - if ((item = searchlist(tcp_name, socknumber)) != NULL)
26 - sprintf(buffer, "%s", item->name);
27 - } else if (!strcmp(proto, "udp")) {
28 - if ((item = searchlist(udp_name, socknumber)) != NULL)
29 - sprintf(buffer, "%s", item->name);
30 - } else if (!strcmp(proto, "raw")) {
31 - if ((item = searchlist(raw_name, socknumber)) != NULL)
32 - sprintf(buffer, "%s", item->name);
33 -
34 + if (!strcmp(proto, "tcp"))
35 + item = searchlist(tcp_name, socknumber);
36 + else if (!strcmp(proto, "udp"))
37 + item = searchlist(udp_name, socknumber);
38 + else if (!strcmp(proto, "raw"))
39 + item = searchlist(raw_name, socknumber);
40 + else
41 + item = NULL;
42 + if (item) {
43 + strncpy(buffer, item->name, sizeof(buffer));
44 + buffer[sizeof(buffer) - 1] = '\0';
45 }
46
47 if (!buffer[0]) {