diff options
Diffstat (limited to 'kernel/params.c')
| -rw-r--r-- | kernel/params.c | 7 | 
1 files changed, 4 insertions, 3 deletions
| diff --git a/kernel/params.c b/kernel/params.c index b92d64161b75..b96cfd693c99 100644 --- a/kernel/params.c +++ b/kernel/params.c @@ -513,13 +513,14 @@ EXPORT_SYMBOL(param_array_ops);  int param_set_copystring(const char *val, const struct kernel_param *kp)  {  	const struct kparam_string *kps = kp->str; +	const size_t len = strnlen(val, kps->maxlen); -	if (strnlen(val, kps->maxlen) == kps->maxlen) { +	if (len == kps->maxlen) {  		pr_err("%s: string doesn't fit in %u chars.\n",  		       kp->name, kps->maxlen-1);  		return -ENOSPC;  	} -	strcpy(kps->string, val); +	memcpy(kps->string, val, len + 1);  	return 0;  }  EXPORT_SYMBOL(param_set_copystring); @@ -841,7 +842,7 @@ static void __init param_sysfs_builtin(void)  		dot = strchr(kp->name, '.');  		if (!dot) {  			/* This happens for core_param() */ -			strcpy(modname, "kernel"); +			strscpy(modname, "kernel");  			name_len = 0;  		} else {  			name_len = dot - kp->name + 1; | 
