• BP, Praveen's avatar
    [PATCH] sysctl: string length calculated is wrong if it contains negative numbers · bd9b0bac
    BP, Praveen authored
    In the functions do_proc_dointvec() and do_proc_doulongvec_minmax(),
    there seems to be a bug in string length calculation if string contains
    negative integer.
    
    The console log given below explains the bug. Setting negative values
    may not be a right thing to do for "console log level" but then the test
    (given below) can be used to demonstrate the bug in the code.
    
    # echo "-1 -1 -1 -123456" > /proc/sys/kernel/printk
    # cat /proc/sys/kernel/printk
    -1      -1      -1      -1234
    #
    # echo "-1 -1 -1 123456" > /proc/sys/kernel/printk
    # cat /proc/sys/kernel/printk
    -1      -1      -1      1234
    #
    
    (akpm: the bug is that 123456 gets truncated)
    
    It works as expected if string contains all +ve integers
    
    # echo "1 2 3 4" > /proc/sys/kernel/printk
    # cat /proc/sys/kernel/printk
    1       2       3       4
    #
    
    The patch given below fixes the issue.
    Signed-off-by: default avatarPraveen BP <praveenbp@ti.com>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    bd9b0bac
sysctl.c 64.2 KB