kernel/params.c: use scnprintf() instead of sprintf()
PATCH 1/1 kernel/params.c: use scnprintf() instead of sprintf()
For some strings (e.g. version string), they are permitted to be larger than PAGE_SIZE (although meaningless), so recommend to use scnprintf() instead of sprintf().
Signed-off-by Chen Gang <[email protected]>
--- kernel/params.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-)
kernel/params.c +4 -3
@@ -241,7 +241,8 @@ int parse_args(const char *doing, } \ int param_get_##name(char *buffer, const struct kernel_param *kp) \ { \ - return sprintf(buffer, format, *((type *)kp->arg)); \ + return scnprintf(buffer, PAGE_SIZE, format, \ + *((type *)kp->arg)); \ } \ struct kernel_param_ops param_ops_##name = { \ .set = param_set_##name, \
@@ -285,7 +286,7 @@ EXPORT_SYMBOL(param_set_charp);int param_get_charp (char *buffer,const struct kernel_param *kp) { -return sprintf (buffer,"%s" , *((char **)kp->arg)); +return scnprintf (buffer,PAGE_SIZE ,"%s" , *((char **)kp->arg)); }EXPORT_SYMBOL (param_get_charp);
@@ -827,7 +828,7 @@ ssize_t __modver_version_show(struct module_attribute *mattr,struct module_version_attribute *vattr = container_of(mattr, struct module_version_attribute, mattr); -return sprintf (buf,"%s\n" , vattr->version); +return scnprintf (buf,PAGE_SIZE ,"%s\n" , vattr->version); }extern const struct module_version_attribute *__start___modver[];
Signature · 1 line
1.7.7.6
Rusty Russell
AppliedQuoted 3 lines · Chen Gang
For some strings (e.g. version string), they are permitted to be larger than
PAGE_SIZE(although meaningless), so recommend to usescnprintf()instead ofsprintf().
Applied.
Thanks,
Rusty.
Quoted 40 lines
Signed-off-by Chen Gang <[email protected]>--- kernel/params.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-)kernel/params.c +4
-3@@ -241,7 +241,8 @@ int parse_args(const char *doing, } \ int param_get_##name(char *buffer, const struct kernel_param *kp) \ { \ - return sprintf(buffer, format, *((type *)kp->arg)); \ + return scnprintf(buffer, PAGE_SIZE, format, \ + *((type *)kp->arg)); \ } \ struct kernel_param_ops param_ops_##name = { \ .set = param_set_##name, \@@ -285,7 +286,7 @@ EXPORT_SYMBOL(param_set_charp);int param_get_charp (char *buffer,const struct kernel_param *kp) { -return sprintf (buffer,"%s" , *((char **)kp->arg)); +return scnprintf (buffer,PAGE_SIZE ,"%s" , *((char **)kp->arg)); }EXPORT_SYMBOL (param_get_charp);@@ -827,7 +828,7 @@ ssize_t __modver_version_show(struct module_attribute *mattr,struct module_version_attribute *vattr = container_of(mattr, struct module_version_attribute, mattr); -return sprintf (buf,"%s\n" , vattr->version); +return scnprintf (buf,PAGE_SIZE ,"%s\n" , vattr->version); }extern const struct module_version_attribute *__start___modver[];Signature · 1 line
1.7.7.6
Quoted 8 lines · Rusty Russell
Quoted 3 lines · Chen Gang
For some strings (e.g. version string), they are permitted to be larger than
PAGE_SIZE(although meaningless), so recommend to usescnprintf()instead ofsprintf().Applied.
Thanks.
Quoted 45 lines
Thanks,
Rusty.Quoted 40 lines
Signed-off-by Chen Gang <[email protected]>--- kernel/params.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-)kernel/params.c +4
-3@@ -241,7 +241,8 @@ int parse_args(const char *doing, } \ int param_get_##name(char *buffer, const struct kernel_param *kp) \ { \ - return sprintf(buffer, format, *((type *)kp->arg)); \ + return scnprintf(buffer, PAGE_SIZE, format, \ + *((type *)kp->arg)); \ } \ struct kernel_param_ops param_ops_##name = { \ .set = param_set_##name, \@@ -285,7 +286,7 @@ EXPORT_SYMBOL(param_set_charp);int param_get_charp (char *buffer,const struct kernel_param *kp) { -return sprintf (buffer,"%s" , *((char **)kp->arg)); +return scnprintf (buffer,PAGE_SIZE ,"%s" , *((char **)kp->arg)); }EXPORT_SYMBOL (param_get_charp);@@ -827,7 +828,7 @@ ssize_t __modver_version_show(struct module_attribute *mattr,struct module_version_attribute *vattr = container_of(mattr, struct module_version_attribute, mattr); -return sprintf (buf,"%s\n" , vattr->version); +return scnprintf (buf,PAGE_SIZE ,"%s\n" , vattr->version); }extern const struct module_version_attribute *__start___modver[];Signature · 1 line
1.7.7.6
Signature · 1 line
Chen Gang