summaryrefslogtreecommitdiffstats
path: root/minzip/DirUtil.c
diff options
context:
space:
mode:
authorKenny Root <kroot@android.com>2012-03-31 00:53:17 +0200
committerAndroid Git Automerger <android-git-automerger@android.com>2012-03-31 00:53:17 +0200
commit0b1fee1b2aa7da86ffdabfe4c577ee8adb93d803 (patch)
tree46aacb687e7126a5a64949dd7ade2f284ee57c15 /minzip/DirUtil.c
parentam 37d0f260: Reconcile with ics-mr1-release (diff)
parentMerge changes Ied379f26,I09fb9d56 (diff)
downloadandroid_bootable_recovery-0b1fee1b2aa7da86ffdabfe4c577ee8adb93d803.tar
android_bootable_recovery-0b1fee1b2aa7da86ffdabfe4c577ee8adb93d803.tar.gz
android_bootable_recovery-0b1fee1b2aa7da86ffdabfe4c577ee8adb93d803.tar.bz2
android_bootable_recovery-0b1fee1b2aa7da86ffdabfe4c577ee8adb93d803.tar.lz
android_bootable_recovery-0b1fee1b2aa7da86ffdabfe4c577ee8adb93d803.tar.xz
android_bootable_recovery-0b1fee1b2aa7da86ffdabfe4c577ee8adb93d803.tar.zst
android_bootable_recovery-0b1fee1b2aa7da86ffdabfe4c577ee8adb93d803.zip
Diffstat (limited to 'minzip/DirUtil.c')
-rw-r--r--minzip/DirUtil.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/minzip/DirUtil.c b/minzip/DirUtil.c
index 20c89cd6f..0d49b5780 100644
--- a/minzip/DirUtil.c
+++ b/minzip/DirUtil.c
@@ -54,7 +54,8 @@ getPathDirStatus(const char *path)
int
dirCreateHierarchy(const char *path, int mode,
- const struct utimbuf *timestamp, bool stripFileName)
+ const struct utimbuf *timestamp, bool stripFileName,
+ struct selabel_handle *sehnd)
{
DirStatus ds;
@@ -144,7 +145,25 @@ dirCreateHierarchy(const char *path, int mode,
} else if (ds == DMISSING) {
int err;
+#ifdef HAVE_SELINUX
+ char *secontext = NULL;
+
+ if (sehnd) {
+ selabel_lookup(sehnd, &secontext, cpath, mode);
+ setfscreatecon(secontext);
+ }
+#endif
+
err = mkdir(cpath, mode);
+
+#ifdef HAVE_SELINUX
+
+ if (secontext) {
+ freecon(secontext);
+ setfscreatecon(NULL);
+ }
+#endif
+
if (err != 0) {
free(cpath);
return -1;