From: Alan T. DeKok Date: Sat, 2 Mar 2013 14:49:46 +0000 (-0500) Subject: Use correct buffer for output X-Git-Tag: release_3_0_0_beta1~882 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9c4cbe9a0d11936eadaf016f36c234dc884690a2;p=thirdparty%2Ffreeradius-server.git Use correct buffer for output --- diff --git a/src/main/conffile.c b/src/main/conffile.c index 505dd4a4595..faae0535162 100644 --- a/src/main/conffile.c +++ b/src/main/conffile.c @@ -1198,24 +1198,23 @@ static const char *cf_local_file(const char *base, const char *filename, char *buffer, size_t bufsize) { size_t dirsize; - const char *p; + char *p; + + strlcpy(buffer, base, bufsize); - p = strrchr(base, FR_DIR_SEP); + p = strrchr(buffer, FR_DIR_SEP); if (!p) return filename; if (p[1]) { /* ./foo */ - strlcat(base, "/", sizeof(base)); - p = strrchr(base, '/'); - rad_assert(p != NULL); + p[1] = '\0'; } - dirsize = (p - base) + 1; + dirsize = (p - buffer) + 1; if ((dirsize + strlen(filename)) >= bufsize) { return NULL; } - memcpy(buffer, base, dirsize); - strlcpy(buffer + dirsize, filename, bufsize - dirsize); + strlcpy(p + 1, filename, bufsize - dirsize); return buffer; }