From ff7543ca42f8a42b04545cb0c23f0fb3a00eced2 Mon Sep 17 00:00:00 2001 From: Kris Kennaway Date: Sat, 12 May 2001 09:44:32 +0000 Subject: Clean up some of the evil string handling in this code, replace warnx()+exit() with errx() and replace a big if..then..else construct to determine the package download directory with a lookup table. Reviewed by: jkh MFC after: 2 weeks --- usr.sbin/pkg_install/lib/lib.h | 2 ++ usr.sbin/pkg_install/lib/str.c | 14 ++++++++++++++ 2 files changed, 16 insertions(+) (limited to 'usr.sbin/pkg_install/lib') diff --git a/usr.sbin/pkg_install/lib/lib.h b/usr.sbin/pkg_install/lib/lib.h index 3ab1b633ece2..841b7356f608 100644 --- a/usr.sbin/pkg_install/lib/lib.h +++ b/usr.sbin/pkg_install/lib/lib.h @@ -128,6 +128,8 @@ void str_lowercase(char *); char *basename_of(char *); char *strconcat(char *, char *); char *get_string(char *, int, FILE *); +int s_strlcpy(char *, const char *, size_t); +int s_strlcat(char *, const char *, size_t); /* File */ Boolean fexists(char *); diff --git a/usr.sbin/pkg_install/lib/str.c b/usr.sbin/pkg_install/lib/str.c index c5f11a290fc9..55ff78282d2a 100644 --- a/usr.sbin/pkg_install/lib/str.c +++ b/usr.sbin/pkg_install/lib/str.c @@ -61,6 +61,20 @@ get_dash_string(char **str) return *str; } +/* Do a strlcpy and test for overflow */ +int +s_strlcpy(char *dst, const char *src, size_t size) +{ + return (strlcpy(dst, src, size) >= size); +} + +/* Do a strlcat and test for overflow */ +int +s_strlcat(char *dst, const char *src, size_t size) +{ + return (strlcat(dst, src, size) >= size); +} + /* Rather Obvious */ char * copy_string(char *str) -- cgit v1.3