aboutsummaryrefslogtreecommitdiffstats
path: root/testing/libtar/libtar-1.2.20-fix-resource-leaks.patch
diff options
context:
space:
mode:
Diffstat (limited to 'testing/libtar/libtar-1.2.20-fix-resource-leaks.patch')
-rw-r--r--testing/libtar/libtar-1.2.20-fix-resource-leaks.patch241
1 files changed, 0 insertions, 241 deletions
diff --git a/testing/libtar/libtar-1.2.20-fix-resource-leaks.patch b/testing/libtar/libtar-1.2.20-fix-resource-leaks.patch
deleted file mode 100644
index bdca92ebcd..0000000000
--- a/testing/libtar/libtar-1.2.20-fix-resource-leaks.patch
+++ /dev/null
@@ -1,241 +0,0 @@
-From abd0274e6b2f708e9eaa29414b07b3f542cec694 Mon Sep 17 00:00:00 2001
-From: Kamil Dudka <kdudka@redhat.com>
-Date: Tue, 15 Oct 2013 19:48:41 -0400
-Subject: [PATCH 1/3] fix file descriptor leaks reported by cppcheck
-
-Bug: https://bugzilla.redhat.com/785760
----
- lib/append.c | 14 +++++++++-----
- lib/extract.c | 4 ++++
- libtar/libtar.c | 3 +++
- 3 files changed, 16 insertions(+), 5 deletions(-)
-
-diff --git a/lib/append.c b/lib/append.c
-index e8bd89d..ff58532 100644
---- a/lib/append.c
-+++ b/lib/append.c
-@@ -216,6 +216,7 @@ tar_append_regfile(TAR *t, const char *realname)
- int filefd;
- int i, j;
- size_t size;
-+ int rv = -1;
-
- filefd = open(realname, O_RDONLY);
- if (filefd == -1)
-@@ -234,25 +235,28 @@ tar_append_regfile(TAR *t, const char *realname)
- {
- if (j != -1)
- errno = EINVAL;
-- return -1;
-+ goto fail;
- }
- if (tar_block_write(t, &block) == -1)
-- return -1;
-+ goto fail;
- }
-
- if (i > 0)
- {
- j = read(filefd, &block, i);
- if (j == -1)
-- return -1;
-+ goto fail;
- memset(&(block[i]), 0, T_BLOCKSIZE - i);
- if (tar_block_write(t, &block) == -1)
-- return -1;
-+ goto fail;
- }
-
-+ /* success! */
-+ rv = 0;
-+fail:
- close(filefd);
-
-- return 0;
-+ return rv;
- }
-
-
-diff --git a/lib/extract.c b/lib/extract.c
-index 36357e7..9fc6ad5 100644
---- a/lib/extract.c
-+++ b/lib/extract.c
-@@ -228,13 +228,17 @@ tar_extract_regfile(TAR *t, char *realname)
- {
- if (k != -1)
- errno = EINVAL;
-+ close(fdout);
- return -1;
- }
-
- /* write block to output file */
- if (write(fdout, buf,
- ((i > T_BLOCKSIZE) ? T_BLOCKSIZE : i)) == -1)
-+ {
-+ close(fdout);
- return -1;
-+ }
- }
-
- /* close output file */
-diff --git a/libtar/libtar.c b/libtar/libtar.c
-index 9fa92b2..bb5644c 100644
---- a/libtar/libtar.c
-+++ b/libtar/libtar.c
-@@ -83,7 +83,10 @@ gzopen_frontend(char *pathname, int oflags, int mode)
- return -1;
-
- if ((oflags & O_CREAT) && fchmod(fd, mode))
-+ {
-+ close(fd);
- return -1;
-+ }
-
- gzf = gzdopen(fd, gzoflags);
- if (!gzf)
---
-1.7.1
-
-
-From 36629a41208375f5105427e98078127551692028 Mon Sep 17 00:00:00 2001
-From: Huzaifa Sidhpurwala <huzaifas@fedoraproject.org>
-Date: Tue, 15 Oct 2013 20:02:58 -0400
-Subject: [PATCH 2/3] fix memleak on tar_open() failure
-
----
- lib/handle.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/lib/handle.c b/lib/handle.c
-index 33a262c..002d23c 100644
---- a/lib/handle.c
-+++ b/lib/handle.c
-@@ -82,6 +82,7 @@ tar_open(TAR **t, const char *pathname, tartype_t *type,
- (*t)->fd = (*((*t)->type->openfunc))(pathname, oflags, mode);
- if ((*t)->fd == -1)
- {
-+ libtar_hash_free((*t)->h, NULL);
- free(*t);
- return -1;
- }
---
-1.7.1
-
-
-From f3c711cf3054ff366a1a3500cdc8c64ecc2d2da6 Mon Sep 17 00:00:00 2001
-From: Huzaifa Sidhpurwala <huzaifas@fedoraproject.org>
-Date: Tue, 15 Oct 2013 20:05:04 -0400
-Subject: [PATCH 3/3] fix memleaks in libtar sample program
-
----
- libtar/libtar.c | 29 ++++++++++++++++++-----------
- 1 files changed, 18 insertions(+), 11 deletions(-)
-
-diff --git a/libtar/libtar.c b/libtar/libtar.c
-index bb5644c..23f8741 100644
---- a/libtar/libtar.c
-+++ b/libtar/libtar.c
-@@ -253,6 +253,7 @@ extract(char *tarfile, char *rootdir)
- if (tar_extract_all(t, rootdir) != 0)
- {
- fprintf(stderr, "tar_extract_all(): %s\n", strerror(errno));
-+ tar_close(t);
- return -1;
- }
-
-@@ -270,12 +271,13 @@ extract(char *tarfile, char *rootdir)
-
-
- void
--usage()
-+usage(void *rootdir)
- {
- printf("Usage: %s [-C rootdir] [-g] [-z] -x|-t filename.tar\n",
- progname);
- printf(" %s [-C rootdir] [-g] [-z] -c filename.tar ...\n",
- progname);
-+ free(rootdir);
- exit(-1);
- }
-
-@@ -292,6 +294,7 @@ main(int argc, char *argv[])
- int c;
- int mode = 0;
- libtar_list_t *l;
-+ int return_code = -2;
-
- progname = basename(argv[0]);
-
-@@ -313,17 +316,17 @@ main(int argc, char *argv[])
- break;
- case 'c':
- if (mode)
-- usage();
-+ usage(rootdir);
- mode = MODE_CREATE;
- break;
- case 'x':
- if (mode)
-- usage();
-+ usage(rootdir);
- mode = MODE_EXTRACT;
- break;
- case 't':
- if (mode)
-- usage();
-+ usage(rootdir);
- mode = MODE_LIST;
- break;
- #ifdef HAVE_LIBZ
-@@ -332,7 +335,7 @@ main(int argc, char *argv[])
- break;
- #endif /* HAVE_LIBZ */
- default:
-- usage();
-+ usage(rootdir);
- }
-
- if (!mode || ((argc - optind) < (mode == MODE_CREATE ? 2 : 1)))
-@@ -341,7 +344,7 @@ main(int argc, char *argv[])
- printf("argc - optind == %d\tmode == %d\n", argc - optind,
- mode);
- #endif
-- usage();
-+ usage(rootdir);
- }
-
- #ifdef DEBUG
-@@ -351,21 +354,25 @@ main(int argc, char *argv[])
- switch (mode)
- {
- case MODE_EXTRACT:
-- return extract(argv[optind], rootdir);
-+ return_code = extract(argv[optind], rootdir);
-+ break;
- case MODE_CREATE:
- tarfile = argv[optind];
- l = libtar_list_new(LIST_QUEUE, NULL);
- for (c = optind + 1; c < argc; c++)
- libtar_list_add(l, argv[c]);
-- return create(tarfile, rootdir, l);
-+ return_code = create(tarfile, rootdir, l);
-+ libtar_list_free(l, NULL);
-+ break;
- case MODE_LIST:
-- return list(argv[optind]);
-+ return_code = list(argv[optind]);
-+ break;
- default:
- break;
- }
-
-- /* NOTREACHED */
-- return -2;
-+ free(rootdir);
-+ return return_code;
- }
-
-
---
-1.7.1
-