Re: [PATCH v2] libfile: copy_file: prevent spurious error message

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Robert,

On Wed, Oct 16, 2019 at 01:26:06PM +0200, Robert Karszniewicz wrote:
> Before this, if the function bails out somewhere at a later point, this
> return value will be outdated and will produce a misleading error
> message down the line.
> 
> Signed-off-by: Robert Karszniewicz <r.karszniewicz@xxxxxxxxx>
> ---
> Changes from v1:
> - commit message
> 
>  lib/libfile.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/lib/libfile.c b/lib/libfile.c
> index 3f3ec21..319e66b 100644
> --- a/lib/libfile.c
> +++ b/lib/libfile.c
> @@ -349,6 +349,7 @@ int copy_file(const char *src, const char *dst, int verbose)
>  	ret = stat(dst, &dststat);
>  	if (ret && ret != -ENOENT)
>  		goto out;
> +	ret = 0;

Setting ret = 0 here is wrong as we test for ret one line further:

>  
>  	/* Set O_TRUNC only if file exist and is a regular file */
>  	if (!ret && S_ISREG(dststat.st_mode))

Anyway, it seems the error handling in copy_file is broken since
0ec6bd3e1b ("libfile: copy_file: Only open regular files with O_TRUNC").
Before that 'ret' was initialized to 1 and only when all was done it
was set to 0 and returned. After this commit 'ret' was set to the return
value of the stat() call and accidently returned after each 'goto out'.
'ret' should be set explicitly to the desired return value right before
each 'goto out'.

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox



[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux