From 6b600f964471cef977821689185db687f67d2c19 Mon Sep 17 00:00:00 2001 From: bigbiff bigbiff Date: Sun, 5 Jan 2014 18:13:43 -0500 Subject: Restore contexts when doing mkdierhier in libtar Do a restore of loaded file contexts to /data/media directory. This will help denials to be prevented when internal storage is wiped. Change-Id: Ie49bbfa48d2f3ee4f08376d9c1877b92c051017c --- libtar/extract.c | 5 ++++- libtar/wrapper.c | 6 ------ 2 files changed, 4 insertions(+), 7 deletions(-) (limited to 'libtar') diff --git a/libtar/extract.c b/libtar/extract.c index 8081aa2b9..d9ab7882f 100644 --- a/libtar/extract.c +++ b/libtar/extract.c @@ -159,11 +159,14 @@ tar_extract_file(TAR *t, char *realname, char *prefix) if((t->options & TAR_STORE_SELINUX) && t->th_buf.selinux_context != NULL) { #ifdef DEBUG - printf(" Restoring SELinux context %s to file %s\n", t->th_buf.selinux_context, realname); + printf(" Restoring SELinux context %s to file %s\n", t->th_buf.selinux_context, realname); #endif if (lsetfilecon(realname, t->th_buf.selinux_context) < 0) { fprintf(stderr, "Failed to restore SELinux context %s!\n", strerror(errno)); } + if (lsetfilecon(dirname(realname), t->th_buf.selinux_context) < 0) { + fprintf(stderr, "Failed to restore SELinux context %s!\n", strerror(errno)); + } } #endif diff --git a/libtar/wrapper.c b/libtar/wrapper.c index dab7e0076..708c845b9 100644 --- a/libtar/wrapper.c +++ b/libtar/wrapper.c @@ -80,12 +80,6 @@ tar_extract_all(TAR *t, char *prefix) "\"%s\")\n", buf); #endif printf("item name: '%s'\n", filename); - /* - if (strcmp(filename, "/") == 0) { - printf("skipping /\n"); - continue; - } - */ if (tar_extract_file(t, buf, prefix) != 0) return -1; } -- cgit v1.2.3