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