batman-adv: No deact of aggregation on wrong input
PATCH 2/3 batman-adv: No deact of aggregation on wrong input
A non-integer changes the aggregation mode. Therefore this patch changes the behaviour to explicitly check strict_strtoul()'s return code.
Signed-off-by Linus Lüssing <[email protected]>
--- proc.c | 24 ++++++++++++------------ 1 files changed, 12 insertions(+), 12 deletions(-)
proc.c +12 -12
@@ -433,6 +433,7 @@ static ssize_t proc_aggr_write(struct file *file, const char __user *buffer,char *aggr_string;int not_copied =0 ;unsigned long aggregation_enabled_tmp; +int retval; aggr_string =kmalloc (count,GFP_KERNEL );
@@ -442,22 +443,21 @@ static ssize_t proc_aggr_write(struct file *file, const char __user *buffer, not_copied =copy_from_user (aggr_string, buffer, count); aggr_string[count - not_copied -1 ] =0 ; -strict_strtoul (aggr_string,10 , &aggregation_enabled_tmp); + retval =strict_strtoul (aggr_string,10 , &aggregation_enabled_tmp); -if ((aggregation_enabled_tmp !=0 ) && (aggregation_enabled_tmp !=1 )) { +if (retval == -EINVAL || aggregation_enabled_tmp >1 ) {printk (KERN_ERR "batman-adv:Aggregation can only be enabled (1) or disabled (0), given value: %li\n" , aggregation_enabled_tmp); - goto end; + } +else { +printk (KERN_INFO "batman-adv:Changing aggregation from: %s (%i) to: %s (%li)\n" , + (atomic_read (&aggregation_enabled) ==1 ? +"enabled" :"disabled" ), +atomic_read (&aggregation_enabled), + (aggregation_enabled_tmp ==1 ?"enabled" :"disabled" ), + aggregation_enabled_tmp); +atomic_set (&aggregation_enabled, (unsigned )aggregation_enabled_tmp); } -printk (KERN_INFO "batman-adv:Changing aggregation from: %s (%i) to: %s (%li)\n" , - (atomic_read (&aggregation_enabled) ==1 ? -"enabled" :"disabled" ), -atomic_read (&aggregation_enabled), - (aggregation_enabled_tmp ==1 ?"enabled" :"disabled" ), - aggregation_enabled_tmp); - -atomic_set (&aggregation_enabled, (unsigned )aggregation_enabled_tmp); -end:kfree (aggr_string);return count; }
Signature · 1 line
1.6.5.7
Hello Linus,
thank you for the patch, applied with minor style changes in svn revision 1528.
best regards,
Simon
Quoted 61 lines · On Thu, Dec 31, 2009 at 04:39:55AM +0100, =?UTF-8?q?Linus=20L=C3=BCssing?=…
A non-integer changes the aggregation mode. Therefore this patch changes the behaviour to explicitly check strict_strtoul()'s return code.
Signed-off-by Linus Lüssing <[email protected]>--- proc.c | 24 ++++++++++++------------ 1 files changed, 12 insertions(+), 12 deletions(-)proc.c +12
-12@@ -433,6 +433,7 @@ static ssize_t proc_aggr_write(struct file *file, const char __user *buffer,char *aggr_string;int not_copied =0 ;unsigned long aggregation_enabled_tmp; +int retval; aggr_string =kmalloc (count,GFP_KERNEL );@@ -442,22 +443,21 @@ static ssize_t proc_aggr_write(struct file *file, const char __user *buffer, not_copied =copy_from_user (aggr_string, buffer, count); aggr_string[count - not_copied -1 ] =0 ; -strict_strtoul (aggr_string,10 , &aggregation_enabled_tmp); + retval =strict_strtoul (aggr_string,10 , &aggregation_enabled_tmp); -if ((aggregation_enabled_tmp !=0 ) && (aggregation_enabled_tmp !=1 )) { +if (retval == -EINVAL || aggregation_enabled_tmp >1 ) {printk (KERN_ERR "batman-adv:Aggregation can only be enabled (1) or disabled (0), given value: %li\n" , aggregation_enabled_tmp); - goto end; + } +else { +printk (KERN_INFO "batman-adv:Changing aggregation from: %s (%i) to: %s (%li)\n" , + (atomic_read (&aggregation_enabled) ==1 ? +"enabled" :"disabled" ), +atomic_read (&aggregation_enabled), + (aggregation_enabled_tmp ==1 ?"enabled" :"disabled" ), + aggregation_enabled_tmp); +atomic_set (&aggregation_enabled, (unsigned )aggregation_enabled_tmp); } -printk (KERN_INFO "batman-adv:Changing aggregation from: %s (%i) to: %s (%li)\n" , - (atomic_read (&aggregation_enabled) ==1 ? -"enabled" :"disabled" ), -atomic_read (&aggregation_enabled), - (aggregation_enabled_tmp ==1 ?"enabled" :"disabled" ), - aggregation_enabled_tmp); - -atomic_set (&aggregation_enabled, (unsigned )aggregation_enabled_tmp); -end:kfree (aggr_string);return count; }Signature · 6 lines
1.6.5.7 _______________________________________________ B.A.T.M.A.N mailing list [email protected] https://lists.open-mesh.net/mm/listinfo/b.a.t.m.a.n