From be6a45cb145845377df8425829aca47afe5e7b6c Mon Sep 17 00:00:00 2001 From: dongjiuzhu1 Date: Sun, 13 Apr 2025 21:48:37 +0800 Subject: [PATCH] system/dd: check infile/outfile when closing Signed-off-by: dongjiuzhu1 --- system/dd/dd_main.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/system/dd/dd_main.c b/system/dd/dd_main.c index 3d6cae02d..5c0f9cd16 100644 --- a/system/dd/dd_main.c +++ b/system/dd/dd_main.c @@ -490,14 +490,30 @@ int main(int argc, FAR char **argv) } errout_with_outf: - close(dd.outfd); + if (outfile) + { + dd.outfd = close(dd.outfd); + if (dd.outfd < 0) + { + fprintf(stderr, "%s failed to close outfd:%s\n", + g_dd, strerror(errno)); + } + } errout_with_inf: - close(dd.infd); + if (infile) + { + dd.infd = close(dd.infd); + if (dd.infd < 0) + { + fprintf(stderr, "%s failed to close infd:%s\n", + g_dd, strerror(errno)); + } + } errout_with_alloc: free(dd.buffer); errout_with_paths: - return ret; + return ret < 0 ? ret : (dd.outfd < 0 ? dd.outfd : dd.infd); }