From: Sascha Hauer <s.hauer@pengutronix.de>
To: Robert Karszniewicz <r.karszniewicz@phytec.de>
Cc: barebox@lists.infradead.org
Subject: Re: [PATCH v2] libfile: copy_file: prevent spurious error message
Date: Fri, 18 Oct 2019 13:45:46 +0200 [thread overview]
Message-ID: <20191018114546.dbalujyk2x6oyqyi@pengutronix.de> (raw)
In-Reply-To: <1571225166-309934-1-git-send-email-r.karszniewicz@phytec.de>
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@phytec.de>
> ---
> 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@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
next prev parent reply other threads:[~2019-10-18 11:45 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-15 15:59 [PATCH] " Robert Karszniewicz
2019-10-16 11:26 ` [PATCH v2] " Robert Karszniewicz
2019-10-18 11:45 ` Sascha Hauer [this message]
2019-10-18 17:10 ` [PATCH v3] " Robert Karszniewicz
2019-10-18 17:15 ` Robert Karszniewicz
2019-10-21 7:37 ` Sascha Hauer
2019-10-22 13:47 ` [PATCH v4] libfile: copy_file: fix error handling Robert Karszniewicz
2019-10-23 7:16 ` Sascha Hauer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191018114546.dbalujyk2x6oyqyi@pengutronix.de \
--to=s.hauer@pengutronix.de \
--cc=barebox@lists.infradead.org \
--cc=r.karszniewicz@phytec.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox