Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src add stp{,n}cpy



details:   https://anonhg.NetBSD.org/src/rev/5911069f7c3b
branches:  trunk
changeset: 791135:5911069f7c3b
user:      christos <christos%NetBSD.org@localhost>
date:      Wed Nov 06 16:31:08 2013 +0000

description:
add stp{,n}cpy

diffstat:

 include/ssp/string.h       |   6 ++++-
 lib/libc/ssp/Makefile.inc  |   7 +++--
 lib/libc/ssp/stpcpy_chk.c  |  51 ++++++++++++++++++++++++++++++++++++++++++++++
 lib/libc/ssp/stpncpy_chk.c |  49 ++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 109 insertions(+), 4 deletions(-)

diffs (153 lines):

diff -r dc8fedbe494b -r 5911069f7c3b include/ssp/string.h
--- a/include/ssp/string.h      Wed Nov 06 16:30:55 2013 +0000
+++ b/include/ssp/string.h      Wed Nov 06 16:31:08 2013 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: string.h,v 1.5 2012/07/22 21:05:26 joerg Exp $ */
+/*     $NetBSD: string.h,v 1.6 2013/11/06 16:31:24 christos Exp $      */
 
 /*-
  * Copyright (c) 2006 The NetBSD Foundation, Inc.
@@ -37,6 +37,8 @@
 void *__memcpy_chk(void *, const void *, size_t, size_t);
 void *__memmove_chk(void *, void *, size_t, size_t);
 void *__memset_chk(void *, int, size_t, size_t);
+char *__stpcpy_chk(char *, const char *, size_t);
+char *__stpncpy_chk(char *, const char *, size_t, size_t);
 char *__strcat_chk(char *, const char *, size_t);
 char *__strcpy_chk(char *, const char *, size_t);
 char *__strncat_chk(char *, const char *, size_t, size_t);
@@ -89,6 +91,8 @@
 #define memcpy(dst, src, len) __ssp_bos_check3(memcpy, dst, src, len)
 #define memmove(dst, src, len) __ssp_bos_check3(memmove, dst, src, len)
 #define memset(dst, val, len) __ssp_bos_check3(memset, dst, val, len)
+#define stpcpy(dst, src) __ssp_bos_check2(stpcpy, dst, src)
+#define stpncpy(dst, src, len) __ssp_bos_check3(stpncpy, dst, src, len)
 #define strcpy(dst, src) __ssp_bos_check2(strcpy, dst, src)
 #define strcat(dst, src) __ssp_bos_check2(strcat, dst, src)
 #define strncpy(dst, src, len) __ssp_bos_check3(strncpy, dst, src, len)
diff -r dc8fedbe494b -r 5911069f7c3b lib/libc/ssp/Makefile.inc
--- a/lib/libc/ssp/Makefile.inc Wed Nov 06 16:30:55 2013 +0000
+++ b/lib/libc/ssp/Makefile.inc Wed Nov 06 16:31:08 2013 +0000
@@ -1,10 +1,11 @@
-#      $NetBSD: Makefile.inc,v 1.2 2007/05/30 21:14:35 tls Exp $
+#      $NetBSD: Makefile.inc,v 1.3 2013/11/06 16:31:08 christos Exp $
 
 .PATH: ${.CURDIR}/ssp
 
 SSP_SRCS=      gets_chk.c fgets_chk.c memcpy_chk.c memmove_chk.c memset_chk.c \
-               snprintf_chk.c sprintf_chk.c strcat_chk.c strcpy_chk.c \
-               strncat_chk.c strncpy_chk.c vsnprintf_chk.c vsprintf_chk.c
+               snprintf_chk.c sprintf_chk.c stpcpy_chk.c stpncpy_chk.c \
+               strcat_chk.c strcpy_chk.c strncat_chk.c strncpy_chk.c \
+               vsnprintf_chk.c vsprintf_chk.c
 
 .for i in ${SSP_SRCS}
 SRCS+=${i}
diff -r dc8fedbe494b -r 5911069f7c3b lib/libc/ssp/stpcpy_chk.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/libc/ssp/stpcpy_chk.c Wed Nov 06 16:31:08 2013 +0000
@@ -0,0 +1,51 @@
+/*     $NetBSD: stpcpy_chk.c,v 1.1 2013/11/06 16:31:08 christos Exp $  */
+
+/*-
+ * Copyright (c) 2013 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Christos Zoulas.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <sys/cdefs.h>
+__RCSID("$NetBSD: stpcpy_chk.c,v 1.1 2013/11/06 16:31:08 christos Exp $");
+
+/*LINTLIBRARY*/
+
+#include <ssp/ssp.h>
+#include <string.h>
+
+#undef memcpy
+
+char *
+__stpcpy_chk(char * __restrict dst, const char * __restrict src, size_t slen)
+{
+       size_t len = strlen(src) + 1;
+
+       if (len > slen)
+               __chk_fail();
+
+       (void)memcpy(dst, src, len);
+       return dst + len;
+}
diff -r dc8fedbe494b -r 5911069f7c3b lib/libc/ssp/stpncpy_chk.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/libc/ssp/stpncpy_chk.c        Wed Nov 06 16:31:08 2013 +0000
@@ -0,0 +1,49 @@
+/*     $NetBSD: stpncpy_chk.c,v 1.1 2013/11/06 16:31:08 christos Exp $ */
+
+/*-
+ * Copyright (c) 2013 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Christos Zoulas.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <sys/cdefs.h>
+__RCSID("$NetBSD: stpncpy_chk.c,v 1.1 2013/11/06 16:31:08 christos Exp $");
+
+/*LINTLIBRARY*/
+
+#include <ssp/ssp.h>
+#include <string.h>
+
+#undef stpncpy
+
+char *
+__stpncpy_chk(char * __restrict dst, const char * __restrict src, size_t len,
+    size_t slen)
+{
+       if (len > slen)
+               __chk_fail();
+
+       return stpncpy(dst, src, len);
+}



Home | Main Index | Thread Index | Old Index