changeset 167:f16c8e5e9435

Replace strlcpy() with xstrcpy(), which exits if the string won't fit.
author Rob Landley <rob@landley.net>
date Mon, 19 Nov 2007 01:51:00 -0600
parents 5f1d3ad8a888
children 14fa82969ea3
files lib/lib.c lib/lib.h
diffstat 2 files changed, 6 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/lib/lib.c	Thu Nov 15 21:12:24 2007 -0600
+++ b/lib/lib.c	Mon Nov 19 01:51:00 2007 -0600
@@ -11,22 +11,12 @@
 
 #include "toys.h"
 
-#if !defined(__UCLIBC__) && !defined(__KLIBC__)
-
-// uClibc has this, and if we define our own it conflicts.
-
-// Like strncpy but always null terminated.
-void strlcpy(char *dest, char *src, size_t size)
+// Strcpy with size checking: exit if there's not enough space for the string.
+void xstrcpy(char *dest, char *src, size_t size)
 {
-	int len = strlen(src);
-	if (size--) {
-		if (len > size) len=size;
-		memcpy(dest,src, len);
-		dest[len] = 0;
-	}
+	if (strlen(src)+1 > size) error_exit("xstrcpy");
+	strcpy(dest, src);
 }
-#endif
-
 
 void verror_msg(char *msg, int err, va_list va)
 {
@@ -116,7 +106,7 @@
 void *xstrndup(char *s, size_t n)
 {
 	void *ret = xmalloc(++n);
-	strlcpy(ret, s, n);
+	xstrcpy(ret, s, n);
 
 	return ret;
 }
--- a/lib/lib.h	Thu Nov 15 21:12:24 2007 -0600
+++ b/lib/lib.h	Mon Nov 19 01:51:00 2007 -0600
@@ -36,10 +36,7 @@
                     int (*callback)(struct dirtree *node));
 
 // lib.c
-#if !defined(__UCLIBC__) && !defined(__KLIBC__)
-void strlcpy(char *dest, char *src, size_t size);
-#endif
-
+void xstrcpy(char *dest, char *src, size_t size);
 void verror_msg(char *msg, int err, va_list va);
 void error_msg(char *msg, ...);
 void perror_msg(char *msg, ...);