diff options
author | Dees Troy <dees_troy@teamw.in> | 2013-09-05 21:53:36 +0200 |
---|---|---|
committer | Gerrit Code Review <gerrit@198.50.184.117> | 2013-09-05 21:53:36 +0200 |
commit | 8807a1ead605b54d86ba96466aee648fcd189ab4 (patch) | |
tree | 6b7cde9b953529948a725a606078818731db69fc /libtar/append.c | |
parent | Extract file_contexts from zips if it exists (diff) | |
parent | libtar: store SELinux file context in tar archives (diff) | |
download | android_bootable_recovery-8807a1ead605b54d86ba96466aee648fcd189ab4.tar android_bootable_recovery-8807a1ead605b54d86ba96466aee648fcd189ab4.tar.gz android_bootable_recovery-8807a1ead605b54d86ba96466aee648fcd189ab4.tar.bz2 android_bootable_recovery-8807a1ead605b54d86ba96466aee648fcd189ab4.tar.lz android_bootable_recovery-8807a1ead605b54d86ba96466aee648fcd189ab4.tar.xz android_bootable_recovery-8807a1ead605b54d86ba96466aee648fcd189ab4.tar.zst android_bootable_recovery-8807a1ead605b54d86ba96466aee648fcd189ab4.zip |
Diffstat (limited to 'libtar/append.c')
-rw-r--r-- | libtar/append.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/libtar/append.c b/libtar/append.c index 05024b926..3a8bfc690 100644 --- a/libtar/append.c +++ b/libtar/append.c @@ -90,6 +90,31 @@ tar_append_file(TAR *t, char *realname, char *savename) #endif th_set_path(t, (savename ? savename : realname)); +#ifdef HAVE_SELINUX + /* get selinux context */ + 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) + { + t->th_buf.selinux_context = strdup(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..."); |