Use kstrtoint function instead of sscanf and check for return values.

Signed-off-by: Rastislav Barlik <[email protected]>
---
 samples/kobject/kobject-example.c | 14 +++++++++++---
 samples/kobject/kset-example.c    | 14 +++++++++++---
 2 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/samples/kobject/kobject-example.c 
b/samples/kobject/kobject-example.c
index 01562e0..063aaec 100644
--- a/samples/kobject/kobject-example.c
+++ b/samples/kobject/kobject-example.c
@@ -36,7 +36,12 @@ static ssize_t foo_show(struct kobject *kobj, struct 
kobj_attribute *attr,
 static ssize_t foo_store(struct kobject *kobj, struct kobj_attribute *attr,
                         const char *buf, size_t count)
 {
-       sscanf(buf, "%du", &foo);
+       int ret;
+
+       ret = kstrtoint(buf, 10, &foo);
+       if (ret < 0)
+               return ret;
+
        return count;
 }
 
@@ -63,9 +68,12 @@ static ssize_t b_show(struct kobject *kobj, struct 
kobj_attribute *attr,
 static ssize_t b_store(struct kobject *kobj, struct kobj_attribute *attr,
                       const char *buf, size_t count)
 {
-       int var;
+       int var, ret;
+
+       ret = kstrtoint(buf, 10, &var);
+       if (ret < 0)
+               return ret;
 
-       sscanf(buf, "%du", &var);
        if (strcmp(attr->attr.name, "baz") == 0)
                baz = var;
        else
diff --git a/samples/kobject/kset-example.c b/samples/kobject/kset-example.c
index ab5e447..e80ced3 100644
--- a/samples/kobject/kset-example.c
+++ b/samples/kobject/kset-example.c
@@ -120,7 +120,12 @@ static ssize_t foo_show(struct foo_obj *foo_obj, struct 
foo_attribute *attr,
 static ssize_t foo_store(struct foo_obj *foo_obj, struct foo_attribute *attr,
                         const char *buf, size_t count)
 {
-       sscanf(buf, "%du", &foo_obj->foo);
+       int ret;
+
+       ret = kstrtoint(buf, 10, &foo_obj->foo);
+       if (ret < 0)
+               return ret;
+
        return count;
 }
 
@@ -147,9 +152,12 @@ static ssize_t b_show(struct foo_obj *foo_obj, struct 
foo_attribute *attr,
 static ssize_t b_store(struct foo_obj *foo_obj, struct foo_attribute *attr,
                       const char *buf, size_t count)
 {
-       int var;
+       int var, ret;
+
+       ret = kstrtoint(buf, 10, &var);
+       if (ret < 0)
+               return ret;
 
-       sscanf(buf, "%du", &var);
        if (strcmp(attr->attr.name, "baz") == 0)
                foo_obj->baz = var;
        else
-- 
2.1.3


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to