Module Name:    src
Committed By:   christos
Date:           Sat May  9 15:42:21 UTC 2015

Modified Files:
        src/lib/libc/ssp: memcpy_chk.c stpcpy_chk.c stpncpy_chk.c strcpy_chk.c
            strncpy_chk.c

Log Message:
add overlapping pointer checks


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/lib/libc/ssp/memcpy_chk.c \
    src/lib/libc/ssp/stpcpy_chk.c src/lib/libc/ssp/strncpy_chk.c
cvs rdiff -u -r1.2 -r1.3 src/lib/libc/ssp/stpncpy_chk.c
cvs rdiff -u -r1.7 -r1.8 src/lib/libc/ssp/strcpy_chk.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/ssp/memcpy_chk.c
diff -u src/lib/libc/ssp/memcpy_chk.c:1.5 src/lib/libc/ssp/memcpy_chk.c:1.6
--- src/lib/libc/ssp/memcpy_chk.c:1.5	Tue Sep 16 20:39:28 2014
+++ src/lib/libc/ssp/memcpy_chk.c	Sat May  9 11:42:21 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: memcpy_chk.c,v 1.5 2014/09/17 00:39:28 joerg Exp $	*/
+/*	$NetBSD: memcpy_chk.c,v 1.6 2015/05/09 15:42:21 christos Exp $	*/
 
 /*-
  * Copyright (c) 2006 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: memcpy_chk.c,v 1.5 2014/09/17 00:39:28 joerg Exp $");
+__RCSID("$NetBSD: memcpy_chk.c,v 1.6 2015/05/09 15:42:21 christos Exp $");
 
 /*LINTLIBRARY*/
 
@@ -46,5 +46,9 @@ __memcpy_chk(void * __restrict dst, cons
 {
 	if (len > slen)
 		__chk_fail();
+
+	if (__ssp_overlap(src, dst, len))
+		__chk_fail();
+
 	return memcpy(dst, src, len);
 }
Index: src/lib/libc/ssp/stpcpy_chk.c
diff -u src/lib/libc/ssp/stpcpy_chk.c:1.5 src/lib/libc/ssp/stpcpy_chk.c:1.6
--- src/lib/libc/ssp/stpcpy_chk.c:1.5	Sun Apr  6 15:29:25 2014
+++ src/lib/libc/ssp/stpcpy_chk.c	Sat May  9 11:42:21 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: stpcpy_chk.c,v 1.5 2014/04/06 19:29:25 christos Exp $	*/
+/*	$NetBSD: stpcpy_chk.c,v 1.6 2015/05/09 15:42:21 christos Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: stpcpy_chk.c,v 1.5 2014/04/06 19:29:25 christos Exp $");
+__RCSID("$NetBSD: stpcpy_chk.c,v 1.6 2015/05/09 15:42:21 christos Exp $");
 
 /*LINTLIBRARY*/
 
@@ -50,6 +50,9 @@ __stpcpy_chk(char * __restrict dst, cons
 	if (len >= slen)
 		__chk_fail();
 
+	if (__ssp_overlap(src, dst, len))
+		__chk_fail();
+
 	(void)memcpy(dst, src, len + 1);
 	return dst + len;
 }
Index: src/lib/libc/ssp/strncpy_chk.c
diff -u src/lib/libc/ssp/strncpy_chk.c:1.5 src/lib/libc/ssp/strncpy_chk.c:1.6
--- src/lib/libc/ssp/strncpy_chk.c:1.5	Tue Sep 16 20:39:28 2014
+++ src/lib/libc/ssp/strncpy_chk.c	Sat May  9 11:42:21 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: strncpy_chk.c,v 1.5 2014/09/17 00:39:28 joerg Exp $	*/
+/*	$NetBSD: strncpy_chk.c,v 1.6 2015/05/09 15:42:21 christos Exp $	*/
 
 /*-
  * Copyright (c) 2006 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: strncpy_chk.c,v 1.5 2014/09/17 00:39:28 joerg Exp $");
+__RCSID("$NetBSD: strncpy_chk.c,v 1.6 2015/05/09 15:42:21 christos Exp $");
 
 /*LINTLIBRARY*/
 
@@ -48,5 +48,8 @@ __strncpy_chk(char * __restrict dst, con
 	if (len > slen)
 		__chk_fail();
 
+	if (__ssp_overlap(src, dst, len))
+		__chk_fail();
+
 	return strncpy(dst, src, len);
 }

Index: src/lib/libc/ssp/stpncpy_chk.c
diff -u src/lib/libc/ssp/stpncpy_chk.c:1.2 src/lib/libc/ssp/stpncpy_chk.c:1.3
--- src/lib/libc/ssp/stpncpy_chk.c:1.2	Wed Nov  6 11:58:58 2013
+++ src/lib/libc/ssp/stpncpy_chk.c	Sat May  9 11:42:21 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: stpncpy_chk.c,v 1.2 2013/11/06 16:58:58 christos Exp $	*/
+/*	$NetBSD: stpncpy_chk.c,v 1.3 2015/05/09 15:42:21 christos Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: stpncpy_chk.c,v 1.2 2013/11/06 16:58:58 christos Exp $");
+__RCSID("$NetBSD: stpncpy_chk.c,v 1.3 2015/05/09 15:42:21 christos Exp $");
 
 /*LINTLIBRARY*/
 
@@ -49,5 +49,8 @@ __stpncpy_chk(char * __restrict dst, con
 	if (len > slen)
 		__chk_fail();
 
+	if (__ssp_overlap(src, dst, len))
+		__chk_fail();
+
 	return stpncpy(dst, src, len);
 }

Index: src/lib/libc/ssp/strcpy_chk.c
diff -u src/lib/libc/ssp/strcpy_chk.c:1.7 src/lib/libc/ssp/strcpy_chk.c:1.8
--- src/lib/libc/ssp/strcpy_chk.c:1.7	Tue Sep 16 20:39:28 2014
+++ src/lib/libc/ssp/strcpy_chk.c	Sat May  9 11:42:21 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: strcpy_chk.c,v 1.7 2014/09/17 00:39:28 joerg Exp $	*/
+/*	$NetBSD: strcpy_chk.c,v 1.8 2015/05/09 15:42:21 christos Exp $	*/
 
 /*-
  * Copyright (c) 2006 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: strcpy_chk.c,v 1.7 2014/09/17 00:39:28 joerg Exp $");
+__RCSID("$NetBSD: strcpy_chk.c,v 1.8 2015/05/09 15:42:21 christos Exp $");
 
 /*LINTLIBRARY*/
 
@@ -48,5 +48,8 @@ __strcpy_chk(char * __restrict dst, cons
 	if (len > slen)
 		__chk_fail();
 
+	if (__ssp_overlap(src, dst, len))
+		__chk_fail();
+
 	return memcpy(dst, src, len);
 }

Reply via email to