At the same time make sure to have on one exit-point. Signed-off-by: Jonathan Rajotte <jonathan.rajotte-jul...@efficios.com> --- src/bin/lttng-crash/lttng-crash.c | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-)
diff --git a/src/bin/lttng-crash/lttng-crash.c b/src/bin/lttng-crash/lttng-crash.c index 4f1efe9..8e57034 100644 --- a/src/bin/lttng-crash/lttng-crash.c +++ b/src/bin/lttng-crash/lttng-crash.c @@ -103,7 +103,7 @@ enum rb_modes { struct crash_abi_unknown { uint8_t magic[RB_CRASH_DUMP_ABI_MAGIC_LEN]; - uint64_t mmap_length; /* Overall lenght of crash record */ + uint64_t mmap_length; /* Overall length of crash record */ uint16_t endian; /* * { 0x12, 0x34 }: big endian * { 0x34, 0x12 }: little endian @@ -326,26 +326,30 @@ int copy_file(const char *file_dest, const char *file_src) int fd_src, fd_dest; ssize_t readlen, writelen; char buf[COPY_BUFLEN]; + int ret; DBG("Copy metadata file '%s' into '%s'", file_src, file_dest); fd_src = open(file_src, O_RDONLY); if (fd_src < 0) { PERROR("Error opening %s for reading", file_src); - return fd_src; + ret = fd_src; + goto error; } fd_dest = open(file_dest, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP); if (fd_dest < 0) { PERROR("Error opening %s for writing", file_dest); - return fd_dest; + ret = fd_dest; + goto error; } for (;;) { readlen = lttng_read(fd_src, buf, COPY_BUFLEN); if (readlen < 0) { PERROR("Error reading input file"); - return -1; + ret = -1; + goto error; } if (!readlen) { break; @@ -353,10 +357,26 @@ int copy_file(const char *file_dest, const char *file_src) writelen = lttng_write(fd_dest, buf, readlen); if (writelen < readlen) { PERROR("Error writing to output file"); - return -1; + ret = -1; + goto error; } } + + ret = close(fd_src); + if (ret < 0) { + PERROR("Error closing %s", file_src); + goto error; + } + + ret = close(fd_dest); + if (ret < 0) { + PERROR("Error closing %s", file_dest); + goto error; + } + return 0; +error: + return ret; } static -- 2.1.4 _______________________________________________ lttng-dev mailing list lttng-dev@lists.lttng.org http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev