Module Name:    src
Committed By:   riz
Date:           Tue Apr  5 06:22:41 UTC 2011

Modified Files:
        src/lib/libc/net [netbsd-5-0]: getservbyname_r.c getservbyport_r.c

Log Message:
Apply patch (requested by christos in ticket #1593):
lib/libc/net/getservbyname_r.c                  patch
lib/libc/net/getservbyport_r.c                  patch

Protect against stack smashes (from Maksymilian Arciemowicz)


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.6.24.1 src/lib/libc/net/getservbyname_r.c \
    src/lib/libc/net/getservbyport_r.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libc/net/getservbyname_r.c
diff -u src/lib/libc/net/getservbyname_r.c:1.6 src/lib/libc/net/getservbyname_r.c:1.6.24.1
--- src/lib/libc/net/getservbyname_r.c:1.6	Wed Mar 21 02:35:39 2007
+++ src/lib/libc/net/getservbyname_r.c	Tue Apr  5 06:22:40 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: getservbyname_r.c,v 1.6 2007/03/21 02:35:39 christos Exp $	*/
+/*	$NetBSD: getservbyname_r.c,v 1.6.24.1 2011/04/05 06:22:40 riz Exp $	*/
 
 /*
  * Copyright (c) 1983, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)getservbyname.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: getservbyname_r.c,v 1.6 2007/03/21 02:35:39 christos Exp $");
+__RCSID("$NetBSD: getservbyname_r.c,v 1.6.24.1 2011/04/05 06:22:40 riz Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -70,6 +70,8 @@
 			key.size = snprintf(buf, sizeof(buf), "\376%s/%s",
 			    name, proto);
 		key.size++;
+		if (key.size > sizeof(buf))
+			return NULL;
 			
 		if ((*db->get)(db, &key, &data, 0) != 0)
 			return NULL;
Index: src/lib/libc/net/getservbyport_r.c
diff -u src/lib/libc/net/getservbyport_r.c:1.6 src/lib/libc/net/getservbyport_r.c:1.6.24.1
--- src/lib/libc/net/getservbyport_r.c:1.6	Wed Mar 21 02:35:39 2007
+++ src/lib/libc/net/getservbyport_r.c	Tue Apr  5 06:22:40 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: getservbyport_r.c,v 1.6 2007/03/21 02:35:39 christos Exp $	*/
+/*	$NetBSD: getservbyport_r.c,v 1.6.24.1 2011/04/05 06:22:40 riz Exp $	*/
 
 /*
  * Copyright (c) 1983, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)getservbyport.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: getservbyport_r.c,v 1.6 2007/03/21 02:35:39 christos Exp $");
+__RCSID("$NetBSD: getservbyport_r.c,v 1.6.24.1 2011/04/05 06:22:40 riz Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -71,6 +71,8 @@
 			key.size = snprintf(buf, sizeof(buf), "\377%d/%s", port,
 			    proto);
 		key.size++;
+		if (key.size > sizeof(buf))
+			return NULL;
 			
 		if ((*db->get)(db, &key, &data, 0) != 0)
 			return NULL;

Reply via email to