diff options
Diffstat (limited to 'libtar')
-rw-r--r-- | libtar/append.c | 15 | ||||
-rw-r--r-- | libtar/extract.c | 3 |
2 files changed, 6 insertions, 12 deletions
diff --git a/libtar/append.c b/libtar/append.c index 3a8bfc690..dcd864984 100644 --- a/libtar/append.c +++ b/libtar/append.c @@ -92,29 +92,22 @@ tar_append_file(TAR *t, char *realname, char *savename) #ifdef HAVE_SELINUX /* get selinux context */ - if(t->options & TAR_STORE_SELINUX) - { - if(t->th_buf.selinux_context != NULL) - { + if(t->options & TAR_STORE_SELINUX) { + if(t->th_buf.selinux_context != NULL) { free(t->th_buf.selinux_context); t->th_buf.selinux_context = NULL; } security_context_t selinux_context = NULL; - if(getfilecon(realname, &selinux_context) >= 0) - { + if (lgetfilecon(realname, &selinux_context) >= 0) { t->th_buf.selinux_context = strdup(selinux_context); + printf("setting selinux context: %s\n", selinux_context); freecon(selinux_context); } else - { -#ifdef DEBUG perror("Failed to get selinux context"); -#endif - } } #endif - /* check if it's a hardlink */ #ifdef DEBUG puts(" tar_append_file(): checking inode cache for hardlink..."); diff --git a/libtar/extract.c b/libtar/extract.c index d19ba859d..8081aa2b9 100644 --- a/libtar/extract.c +++ b/libtar/extract.c @@ -161,8 +161,9 @@ tar_extract_file(TAR *t, char *realname, char *prefix) #ifdef DEBUG printf(" Restoring SELinux context %s to file %s\n", t->th_buf.selinux_context, realname); #endif - if(setfilecon(realname, t->th_buf.selinux_context) < 0) + if (lsetfilecon(realname, t->th_buf.selinux_context) < 0) { fprintf(stderr, "Failed to restore SELinux context %s!\n", strerror(errno)); + } } #endif |