From bfccd62599ef80899929cbbdf7b8f0fc78f8f07b Mon Sep 17 00:00:00 2001 From: Adrien JUND Date: Wed, 4 Apr 2018 20:29:44 +0200 Subject: [PATCH] FUSE - change strcpy to strncpy --- dokan_fuse/src/fuse_opt.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/dokan_fuse/src/fuse_opt.c b/dokan_fuse/src/fuse_opt.c index 8bf101283..a99139743 100644 --- a/dokan_fuse/src/fuse_opt.c +++ b/dokan_fuse/src/fuse_opt.c @@ -102,11 +102,12 @@ int fuse_opt_add_opt(char **opts, const char *opt) if (!*opts) newopts = STRDUP(opt); else { - size_t oldlen = strlen(*opts); - newopts = (char *)realloc(*opts, oldlen + 1 + strlen(opt) + 1); + size_t oldlen = strlen(*opts); + size_t newlen = oldlen + 1 + strlen(opt) + 1; + newopts = (char *)realloc(*opts, newlen); if (newopts) { newopts[oldlen] = ','; - strcpy(newopts + oldlen + 1, opt); + strncpy(newopts + oldlen + 1, opt, newlen); } } if (!newopts) @@ -222,17 +223,19 @@ static int process_opt_sep_arg(struct fuse_opt_context *ctx, int res; char *newarg; char *param; + size_t newarglen; if (next_arg(ctx, arg) == -1) return -1; param = ctx->argv[ctx->argctr]; - newarg = (char *)malloc(sep + strlen(param) + 1); + newarglen = sep + strlen(param) + 1; + newarg = (char *)malloc(newarglen); if (!newarg) return alloc_failed(); memcpy(newarg, arg, sep); - strcpy(newarg + sep, param); + strncpy(newarg + sep, param, newarglen); res = process_opt(ctx, opt, sep, newarg, iso); free(newarg);