diff options
Diffstat (limited to 'libtar/extract.c')
-rw-r--r-- | libtar/extract.c | 5 |
1 files changed, 4 insertions, 1 deletions
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 |