From 2b875b3985b17e2fa316825dbd490a94e0de74d6 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 12 Oct 2013 18:23:40 +0200 Subject: [PATCH] misc-progs: Remove own copy of strlcat. Add compatibility define that uses strncat. --- src/misc-progs/setuid.c | 21 --------------------- src/misc-progs/setuid.h | 5 ++++- 2 files changed, 4 insertions(+), 22 deletions(-) diff --git a/src/misc-progs/setuid.c b/src/misc-progs/setuid.c index 9e5a8f54e..b1e124cbc 100644 --- a/src/misc-progs/setuid.c +++ b/src/misc-progs/setuid.c @@ -115,27 +115,6 @@ int system_core(char* command, uid_t uid, gid_t gid, char *error) } -/* BSD style safe strcat; from the secure programming cookbook */ -size_t strlcat(char *dst, const char *src, size_t len) { - char *dstptr = dst; - size_t dstlen, tocopy = len; - const char *srcptr = src; - - while (tocopy-- && *dstptr) dstptr++; - dstlen = dstptr - dst; - if (!(tocopy = len - dstlen)) return (dstlen + strlen(src)); - while (*srcptr) { - if (tocopy != 1) { - *dstptr++ = *srcptr; - tocopy--; - } - srcptr++; - } - *dstptr = 0; - - return (dstlen + (srcptr - src)); -} - /* General routine to initialise a setuid root program, and put the * environment in a known state. Returns 1 on success, if initsetuid() returns * 0 then you should exit(1) immediately, DON'T attempt to recover from the diff --git a/src/misc-progs/setuid.h b/src/misc-progs/setuid.h index d1155c5e8..9df32066a 100644 --- a/src/misc-progs/setuid.h +++ b/src/misc-progs/setuid.h @@ -23,7 +23,10 @@ extern char * trusted_env[4]; int system_core(char* command, uid_t uid, gid_t gid, char *error); int safe_system(char* command); int unpriv_system(char* command, uid_t uid, gid_t gid); -size_t strlcat(char *dst, const char *src, size_t len); int initsetuid(void); +/* Compatibility for the local copy of strlcat, + * which has been removed. */ +#define strlcat(src, dst, size) strncat(src, dst, size) + #endif -- 2.39.2