Hi!
> See the following in the read_file function.
> *value = read_shares_file(filepath);
> if (*value == -1)
>       return -1;
> Since the return value of read_shares_file and the variable value are
> unsigned int, it is impossible that *value == -1.
> 
> Signed-off-by: Yuan Sun <sunyu...@huawei.com>
> ---
>  testcases/kernel/controllers/libcontrollers/libcontrollers.c | 6 ++++--
>  testcases/kernel/controllers/libcontrollers/libcontrollers.h | 2 +-
>  2 files changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/testcases/kernel/controllers/libcontrollers/libcontrollers.c 
> b/testcases/kernel/controllers/libcontrollers/libcontrollers.c
> index b01e1b8..80a90b9 100644
> --- a/testcases/kernel/controllers/libcontrollers/libcontrollers.c
> +++ b/testcases/kernel/controllers/libcontrollers/libcontrollers.c
> @@ -115,11 +115,14 @@ int read_file(char *filepath, int action, unsigned int 
> *value)
>  {
>       int num_line = 0;
>       FILE *fp;
> +     int tmp;
>       switch (action) {
>       case GET_SHARES:
> -             *value = read_shares_file(filepath);
> +             tmp = read_shares_file(filepath);
>               if (*value == -1)
>                       return -1;
> +             else
> +                     *value = (unsigned int)tmp;
>               break;
>  
>       case GET_TASKS:
> @@ -159,7 +162,6 @@ inline int error_function(char *msg1, char *msg2)
>   * the given pointer location. Returns 0 if success
>   */
>  
> -unsigned
>  int read_shares_file(char *filepath)
>  {
>       FILE *fp;
> diff --git a/testcases/kernel/controllers/libcontrollers/libcontrollers.h 
> b/testcases/kernel/controllers/libcontrollers/libcontrollers.h
> index 4001555..78a7fed 100644
> --- a/testcases/kernel/controllers/libcontrollers/libcontrollers.h
> +++ b/testcases/kernel/controllers/libcontrollers/libcontrollers.h
> @@ -72,7 +72,7 @@ enum{
>  
>  inline int error_function(char *msg1, char *msg2);
>  
> -unsigned int read_shares_file (char *filepath);
> +int read_shares_file(char *filepath);
>  
>  int read_file(char *filepath, int action, unsigned int *value);

Looking at the code, it's more broken than this.

The read_shares_file() function, as well as rest of the functions,
cannot return -1 as they are now.

If you look at the code carefuly:

inline int error_function(char *msg1, char *msg2)
{
        fprintf(stdout, "ERROR: %s ", msg1);
        fprintf(stdout, "%s\n", msg2);
        return -1;
}

unsigned
int read_shares_file(char *filepath)
{
        FILE *fp;
        unsigned int shares;
        fp = fopen(filepath, "r");
        if (fp == NULL)
                error_function("Could not open file", filepath);
        fscanf(fp, "%u", &shares);

The return value from error_function() would be ingnored here and, if the file
cannot be open, the code will crash while passing NULL to fscanf.

-- 
Cyril Hrubis
chru...@suse.cz

------------------------------------------------------------------------------
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to