File libgsf-bsc1014609-corrupted-tar-null-deref.patch of Package libgsf.36131

From 95a8351a75758cf10b3bf6abae0b6b461f90d9e5 Mon Sep 17 00:00:00 2001
From: Morten Welinder <terra@gnome.org>
Date: Fri, 2 Dec 2016 22:19:54 -0500
Subject: [PATCH] tar: fix crash on broken tar file.


	* gsf/gsf-infile-tar.c (tar_directory_for_file): Handle the case
	where what we expected to be a directory is a file.  (That implies
	a corrupted tar file.)  Thanks to Behzad Najjarpour Jabbari,
	Secunia Research at Flexera Software for discovering this.

---
 ChangeLog            | 7 +++++++
 NEWS                 | 3 +++
 gsf/gsf-infile-tar.c | 4 +++-
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/gsf/gsf-infile-tar.c b/gsf/gsf-infile-tar.c
index 271595d..17513fe 100644
--- a/gsf/gsf-infile-tar.c
+++ b/gsf/gsf-infile-tar.c
@@ -181,9 +181,11 @@ tar_directory_for_file (GsfInfileTar *dir, const char *name, gboolean last)
 				gsf_infile_child_by_name (GSF_INFILE (dir),
 							  dirname);
 			if (subdir) {
+				dir = GSF_IS_INFILE_TAR (subdir)
+					? GSF_INFILE_TAR (subdir)
+					: dir;
 				/* Undo the ref. */
 				g_object_unref (subdir);
-				dir = GSF_INFILE_TAR (subdir);
 			} else
 				dir = tar_create_dir (dir, dirname);
 		}
openSUSE Build Service is sponsored by