Tue Oct 8 19:38:27 2019 UTC ()
use strlcpy (the buffer is already zeroed)


(christos)
diff -r1.1.1.1 -r1.2 src/lib/libisns/isns.c

cvs diff -r1.1.1.1 -r1.2 src/lib/libisns/isns.c (expand / switch to unified diff)

--- src/lib/libisns/isns.c 2011/01/16 01:22:50 1.1.1.1
+++ src/lib/libisns/isns.c 2019/10/08 19:38:27 1.2
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: isns.c,v 1.1.1.1 2011/01/16 01:22:50 agc Exp $ */ 1/* $NetBSD: isns.c,v 1.2 2019/10/08 19:38:27 christos Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 2004,2009 The NetBSD Foundation, Inc. 4 * Copyright (c) 2004,2009 The NetBSD Foundation, Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * This code is derived from software contributed to The NetBSD Foundation 7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Wasabi Systems, Inc. 8 * by Wasabi Systems, Inc.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions 11 * modification, are permitted provided that the following conditions
12 * are met: 12 * are met:
13 * 1. Redistributions of source code must retain the above copyright 13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer. 14 * notice, this list of conditions and the following disclaimer.
@@ -20,27 +20,27 @@ @@ -20,27 +20,27 @@
20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE. 29 * POSSIBILITY OF SUCH DAMAGE.
30 */ 30 */
31 31
32#include <sys/cdefs.h> 32#include <sys/cdefs.h>
33__RCSID("$NetBSD: isns.c,v 1.1.1.1 2011/01/16 01:22:50 agc Exp $"); 33__RCSID("$NetBSD: isns.c,v 1.2 2019/10/08 19:38:27 christos Exp $");
34 34
35/* 35/*
36 * isns.c 36 * isns.c
37 */ 37 */
38 38
39#include <sys/types.h> 39#include <sys/types.h>
40#include <sys/param.h> 40#include <sys/param.h>
41#include <sys/uio.h> 41#include <sys/uio.h>
42#include <sys/poll.h> 42#include <sys/poll.h>
43 43
44#include <errno.h> 44#include <errno.h>
45#include <stdio.h> 45#include <stdio.h>
46#include <string.h> 46#include <string.h>
@@ -143,27 +143,27 @@ isns_add_servercon(ISNS_HANDLE isns_hand @@ -143,27 +143,27 @@ isns_add_servercon(ISNS_HANDLE isns_hand
143 ai_p->ai_flags = ai->ai_flags; 143 ai_p->ai_flags = ai->ai_flags;
144 ai_p->ai_family = ai->ai_family; 144 ai_p->ai_family = ai->ai_family;
145 ai_p->ai_socktype = ai->ai_socktype; 145 ai_p->ai_socktype = ai->ai_socktype;
146 ai_p->ai_protocol = ai->ai_protocol; 146 ai_p->ai_protocol = ai->ai_protocol;
147 ai_p->ai_addrlen = ai->ai_addrlen; 147 ai_p->ai_addrlen = ai->ai_addrlen;
148 if (ai->ai_canonname != NULL) { 148 if (ai->ai_canonname != NULL) {
149 len = strlen(ai->ai_canonname); 149 len = strlen(ai->ai_canonname);
150 ai_p->ai_canonname = (char *)isns_malloc(len + 1); 150 ai_p->ai_canonname = (char *)isns_malloc(len + 1);
151 if (ai_p->ai_canonname == NULL) { 151 if (ai_p->ai_canonname == NULL) {
152 isns_free(ai_p); 152 isns_free(ai_p);
153 return ENOMEM; 153 return ENOMEM;
154 } 154 }
155 memset(ai_p->ai_canonname, '\0', len + 1); 155 memset(ai_p->ai_canonname, '\0', len + 1);
156 strncpy(ai_p->ai_canonname, ai->ai_canonname, len); 156 strlcpy(ai_p->ai_canonname, ai->ai_canonname, len + 1);
157 } else 157 } else
158 ai_p->ai_canonname = NULL; 158 ai_p->ai_canonname = NULL;
159 if (ai->ai_addr != NULL) {  159 if (ai->ai_addr != NULL) {
160 ai_p->ai_addr = (struct sockaddr *)isns_malloc(ai_p-> 160 ai_p->ai_addr = (struct sockaddr *)isns_malloc(ai_p->
161 ai_addrlen); 161 ai_addrlen);
162 if (ai_p->ai_addr == NULL) { 162 if (ai_p->ai_addr == NULL) {
163 if (ai_p->ai_canonname != NULL) 163 if (ai_p->ai_canonname != NULL)
164 isns_free(ai_p->ai_canonname); 164 isns_free(ai_p->ai_canonname);
165 isns_free(ai_p); 165 isns_free(ai_p);
166 return ENOMEM; 166 return ENOMEM;
167 } 167 }
168 memcpy(ai_p->ai_addr, ai->ai_addr, ai_p->ai_addrlen); 168 memcpy(ai_p->ai_addr, ai->ai_addr, ai_p->ai_addrlen);
169 } else 169 } else