Merge "Revert "SELinuxMMAC unit tests""
This commit is contained in:
@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<policy>
|
||||
|
||||
<!-- Platform dev key with AOSP -->
|
||||
<signer signature="308204a830820390a003020102020900b3998086d056cffa300d06092a864886f70d0101040500308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d301e170d3038303431353232343035305a170d3335303930313232343035305a308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d30820120300d06092a864886f70d01010105000382010d003082010802820101009c780592ac0d5d381cdeaa65ecc8a6006e36480c6d7207b12011be50863aabe2b55d009adf7146d6f2202280c7cd4d7bdb26243b8a806c26b34b137523a49268224904dc01493e7c0acf1a05c874f69b037b60309d9074d24280e16bad2a8734361951eaf72a482d09b204b1875e12ac98c1aa773d6800b9eafde56d58bed8e8da16f9a360099c37a834a6dfedb7b6b44a049e07a269fccf2c5496f2cf36d64df90a3b8d8f34a3baab4cf53371ab27719b3ba58754ad0c53fc14e1db45d51e234fbbe93c9ba4edf9ce54261350ec535607bf69a2ff4aa07db5f7ea200d09a6c1b49e21402f89ed1190893aab5a9180f152e82f85a45753cf5fc19071c5eec827020103a381fc3081f9301d0603551d0e041604144fe4a0b3dd9cba29f71d7287c4e7c38f2086c2993081c90603551d230481c13081be80144fe4a0b3dd9cba29f71d7287c4e7c38f2086c299a1819aa48197308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d820900b3998086d056cffa300c0603551d13040530030101ff300d06092a864886f70d01010405000382010100572551b8d93a1f73de0f6d469f86dad6701400293c88a0cd7cd778b73dafcc197fab76e6212e56c1c761cfc42fd733de52c50ae08814cefc0a3b5a1a4346054d829f1d82b42b2048bf88b5d14929ef85f60edd12d72d55657e22e3e85d04c831d613d19938bb8982247fa321256ba12d1d6a8f92ea1db1c373317ba0c037f0d1aff645aef224979fba6e7a14bc025c71b98138cef3ddfc059617cf24845cf7b40d6382f7275ed738495ab6e5931b9421765c491b72fb68e080dbdb58c2029d347c8b328ce43ef6a8b15533edfbe989bd6a48dd4b202eda94c6ab8dd5b8399203daae2ed446232e4fe9bd961394c6300e5138e3cfd285e6e4e483538cb8b1b357" >
|
||||
<package name="com.android.frameworks.servicestests.mmac_install_platform" >
|
||||
<seinfo value="package" />
|
||||
</package>
|
||||
</signer>
|
||||
|
||||
<default>
|
||||
<seinfo value="default"/>
|
||||
</default>
|
||||
|
||||
</policy>
|
@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<policy>
|
||||
|
||||
<!-- Platform dev key with AOSP -->
|
||||
<signer signature="308204a830820390a003020102020900b3998086d056cffa300d06092a864886f70d0101040500308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d301e170d3038303431353232343035305a170d3335303930313232343035305a308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d30820120300d06092a864886f70d01010105000382010d003082010802820101009c780592ac0d5d381cdeaa65ecc8a6006e36480c6d7207b12011be50863aabe2b55d009adf7146d6f2202280c7cd4d7bdb26243b8a806c26b34b137523a49268224904dc01493e7c0acf1a05c874f69b037b60309d9074d24280e16bad2a8734361951eaf72a482d09b204b1875e12ac98c1aa773d6800b9eafde56d58bed8e8da16f9a360099c37a834a6dfedb7b6b44a049e07a269fccf2c5496f2cf36d64df90a3b8d8f34a3baab4cf53371ab27719b3ba58754ad0c53fc14e1db45d51e234fbbe93c9ba4edf9ce54261350ec535607bf69a2ff4aa07db5f7ea200d09a6c1b49e21402f89ed1190893aab5a9180f152e82f85a45753cf5fc19071c5eec827020103a381fc3081f9301d0603551d0e041604144fe4a0b3dd9cba29f71d7287c4e7c38f2086c2993081c90603551d230481c13081be80144fe4a0b3dd9cba29f71d7287c4e7c38f2086c299a1819aa48197308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d820900b3998086d056cffa300c0603551d13040530030101ff300d06092a864886f70d01010405000382010100572551b8d93a1f73de0f6d469f86dad6701400293c88a0cd7cd778b73dafcc197fab76e6212e56c1c761cfc42fd733de52c50ae08814cefc0a3b5a1a4346054d829f1d82b42b2048bf88b5d14929ef85f60edd12d72d55657e22e3e85d04c831d613d19938bb8982247fa321256ba12d1d6a8f92ea1db1c373317ba0c037f0d1aff645aef224979fba6e7a14bc025c71b98138cef3ddfc059617cf24845cf7b40d6382f7275ed738495ab6e5931b9421765c491b72fb68e080dbdb58c2029d347c8b328ce43ef6a8b15533edfbe989bd6a48dd4b202eda94c6ab8dd5b8399203daae2ed446232e4fe9bd961394c6300e5138e3cfd285e6e4e483538cb8b1b357" >
|
||||
<package name="com.android.frameworks.servicestests.mmac_install_platform" >
|
||||
<seinfo value="package" />
|
||||
</package>
|
||||
</signer>
|
||||
|
||||
</policy>
|
@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<policy>
|
||||
|
||||
<!-- Platform dev key with AOSP -->
|
||||
<signer signature="308204a830820390a003020102020900b3998086d056cffa300d06092a864886f70d0101040500308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d301e170d3038303431353232343035305a170d3335303930313232343035305a308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d30820120300d06092a864886f70d01010105000382010d003082010802820101009c780592ac0d5d381cdeaa65ecc8a6006e36480c6d7207b12011be50863aabe2b55d009adf7146d6f2202280c7cd4d7bdb26243b8a806c26b34b137523a49268224904dc01493e7c0acf1a05c874f69b037b60309d9074d24280e16bad2a8734361951eaf72a482d09b204b1875e12ac98c1aa773d6800b9eafde56d58bed8e8da16f9a360099c37a834a6dfedb7b6b44a049e07a269fccf2c5496f2cf36d64df90a3b8d8f34a3baab4cf53371ab27719b3ba58754ad0c53fc14e1db45d51e234fbbe93c9ba4edf9ce54261350ec535607bf69a2ff4aa07db5f7ea200d09a6c1b49e21402f89ed1190893aab5a9180f152e82f85a45753cf5fc19071c5eec827020103a381fc3081f9301d0603551d0e041604144fe4a0b3dd9cba29f71d7287c4e7c38f2086c2993081c90603551d230481c13081be80144fe4a0b3dd9cba29f71d7287c4e7c38f2086c299a1819aa48197308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d820900b3998086d056cffa300c0603551d13040530030101ff300d06092a864886f70d01010405000382010100572551b8d93a1f73de0f6d469f86dad6701400293c88a0cd7cd778b73dafcc197fab76e6212e56c1c761cfc42fd733de52c50ae08814cefc0a3b5a1a4346054d829f1d82b42b2048bf88b5d14929ef85f60edd12d72d55657e22e3e85d04c831d613d19938bb8982247fa321256ba12d1d6a8f92ea1db1c373317ba0c037f0d1aff645aef224979fba6e7a14bc025c71b98138cef3ddfc059617cf24845cf7b40d6382f7275ed738495ab6e5931b9421765c491b72fb68e080dbdb58c2029d347c8b328ce43ef6a8b15533edfbe989bd6a48dd4b202eda94c6ab8dd5b8399203daae2ed446232e4fe9bd961394c6300e5138e3cfd285e6e4e483538cb8b1b357" >
|
||||
<seinfo value="signer" />
|
||||
</signer>
|
||||
|
||||
<default>
|
||||
<seinfo value="default"/>
|
||||
</default>
|
||||
|
||||
</policy>
|
@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<policy>
|
||||
|
||||
<!-- Platform dev key with AOSP -->
|
||||
<signer signature="308204a830820390a003020102020900b3998086d056cffa300d06092a864886f70d0101040500308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d301e170d3038303431353232343035305a170d3335303930313232343035305a308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d30820120300d06092a864886f70d01010105000382010d003082010802820101009c780592ac0d5d381cdeaa65ecc8a6006e36480c6d7207b12011be50863aabe2b55d009adf7146d6f2202280c7cd4d7bdb26243b8a806c26b34b137523a49268224904dc01493e7c0acf1a05c874f69b037b60309d9074d24280e16bad2a8734361951eaf72a482d09b204b1875e12ac98c1aa773d6800b9eafde56d58bed8e8da16f9a360099c37a834a6dfedb7b6b44a049e07a269fccf2c5496f2cf36d64df90a3b8d8f34a3baab4cf53371ab27719b3ba58754ad0c53fc14e1db45d51e234fbbe93c9ba4edf9ce54261350ec535607bf69a2ff4aa07db5f7ea200d09a6c1b49e21402f89ed1190893aab5a9180f152e82f85a45753cf5fc19071c5eec827020103a381fc3081f9301d0603551d0e041604144fe4a0b3dd9cba29f71d7287c4e7c38f2086c2993081c90603551d230481c13081be80144fe4a0b3dd9cba29f71d7287c4e7c38f2086c299a1819aa48197308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d820900b3998086d056cffa300c0603551d13040530030101ff300d06092a864886f70d01010405000382010100572551b8d93a1f73de0f6d469f86dad6701400293c88a0cd7cd778b73dafcc197fab76e6212e56c1c761cfc42fd733de52c50ae08814cefc0a3b5a1a4346054d829f1d82b42b2048bf88b5d14929ef85f60edd12d72d55657e22e3e85d04c831d613d19938bb8982247fa321256ba12d1d6a8f92ea1db1c373317ba0c037f0d1aff645aef224979fba6e7a14bc025c71b98138cef3ddfc059617cf24845cf7b40d6382f7275ed738495ab6e5931b9421765c491b72fb68e080dbdb58c2029d347c8b328ce43ef6a8b15533edfbe989bd6a48dd4b202eda94c6ab8dd5b8399203daae2ed446232e4fe9bd961394c6300e5138e3cfd285e6e4e483538cb8b1b357" >
|
||||
<seinfo value="signer" />
|
||||
</signer>
|
||||
</policy>
|
@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<policy>
|
||||
|
||||
<!-- Platform dev key with AOSP -->
|
||||
<signer signature="308204a830820390a003020102020900b3998086d056cffa300d06092a864886f70d0101040500308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d301e170d3038303431353232343035305a170d3335303930313232343035305a308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d30820120300d06092a864886f70d01010105000382010d003082010802820101009c780592ac0d5d381cdeaa65ecc8a6006e36480c6d7207b12011be50863aabe2b55d009adf7146d6f2202280c7cd4d7bdb26243b8a806c26b34b137523a49268224904dc01493e7c0acf1a05c874f69b037b60309d9074d24280e16bad2a8734361951eaf72a482d09b204b1875e12ac98c1aa773d6800b9eafde56d58bed8e8da16f9a360099c37a834a6dfedb7b6b44a049e07a269fccf2c5496f2cf36d64df90a3b8d8f34a3baab4cf53371ab27719b3ba58754ad0c53fc14e1db45d51e234fbbe93c9ba4edf9ce54261350ec535607bf69a2ff4aa07db5f7ea200d09a6c1b49e21402f89ed1190893aab5a9180f152e82f85a45753cf5fc19071c5eec827020103a381fc3081f9301d0603551d0e041604144fe4a0b3dd9cba29f71d7287c4e7c38f2086c2993081c90603551d230481c13081be80144fe4a0b3dd9cba29f71d7287c4e7c38f2086c299a1819aa48197308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d820900b3998086d056cffa300c0603551d13040530030101ff300d06092a864886f70d01010405000382010100572551b8d93a1f73de0f6d469f86dad6701400293c88a0cd7cd778b73dafcc197fab76e6212e56c1c761cfc42fd733de52c50ae08814cefc0a3b5a1a4346054d829f1d82b42b2048bf88b5d14929ef85f60edd12d72d55657e22e3e85d04c831d613d19938bb8982247fa321256ba12d1d6a8f92ea1db1c373317ba0c037f0d1aff645aef224979fba6e7a14bc025c71b98138cef3ddfc059617cf24845cf7b40d6382f7275ed738495ab6e5931b9421765c491b72fb68e080dbdb58c2029d347c8b328ce43ef6a8b15533edfbe989bd6a48dd4b202eda94c6ab8dd5b8399203daae2ed446232e4fe9bd961394c6300e5138e3cfd285e6e4e483538cb8b1b357" >
|
||||
<seinfo value="signer" />
|
||||
<package name="com.android.frameworks.servicestests.mmac_install_platform" >
|
||||
<seinfo value="package" />
|
||||
</package>
|
||||
</signer>
|
||||
|
||||
<default>
|
||||
<seinfo value="default"/>
|
||||
</default>
|
||||
|
||||
</policy>
|
@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<policy>
|
||||
|
||||
<!-- Platform dev key with AOSP -->
|
||||
<signer signature="308204a830820390a003020102020900b3998086d056cffa300d06092a864886f70d0101040500308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d301e170d3038303431353232343035305a170d3335303930313232343035305a308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d30820120300d06092a864886f70d01010105000382010d003082010802820101009c780592ac0d5d381cdeaa65ecc8a6006e36480c6d7207b12011be50863aabe2b55d009adf7146d6f2202280c7cd4d7bdb26243b8a806c26b34b137523a49268224904dc01493e7c0acf1a05c874f69b037b60309d9074d24280e16bad2a8734361951eaf72a482d09b204b1875e12ac98c1aa773d6800b9eafde56d58bed8e8da16f9a360099c37a834a6dfedb7b6b44a049e07a269fccf2c5496f2cf36d64df90a3b8d8f34a3baab4cf53371ab27719b3ba58754ad0c53fc14e1db45d51e234fbbe93c9ba4edf9ce54261350ec535607bf69a2ff4aa07db5f7ea200d09a6c1b49e21402f89ed1190893aab5a9180f152e82f85a45753cf5fc19071c5eec827020103a381fc3081f9301d0603551d0e041604144fe4a0b3dd9cba29f71d7287c4e7c38f2086c2993081c90603551d230481c13081be80144fe4a0b3dd9cba29f71d7287c4e7c38f2086c299a1819aa48197308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d820900b3998086d056cffa300c0603551d13040530030101ff300d06092a864886f70d01010405000382010100572551b8d93a1f73de0f6d469f86dad6701400293c88a0cd7cd778b73dafcc197fab76e6212e56c1c761cfc42fd733de52c50ae08814cefc0a3b5a1a4346054d829f1d82b42b2048bf88b5d14929ef85f60edd12d72d55657e22e3e85d04c831d613d19938bb8982247fa321256ba12d1d6a8f92ea1db1c373317ba0c037f0d1aff645aef224979fba6e7a14bc025c71b98138cef3ddfc059617cf24845cf7b40d6382f7275ed738495ab6e5931b9421765c491b72fb68e080dbdb58c2029d347c8b328ce43ef6a8b15533edfbe989bd6a48dd4b202eda94c6ab8dd5b8399203daae2ed446232e4fe9bd961394c6300e5138e3cfd285e6e4e483538cb8b1b357" >
|
||||
<seinfo value="signer" />
|
||||
<package name="com.android.frameworks.servicestests.mmac_install_platform" >
|
||||
<seinfo value="package" />
|
||||
</package>
|
||||
</signer>
|
||||
|
||||
</policy>
|
@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<policy>
|
||||
|
||||
<default>
|
||||
<seinfo value="default" />
|
||||
</default>
|
||||
|
||||
</policy>
|
@ -1,3 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<policy>
|
||||
</policy>
|
Binary file not shown.
Binary file not shown.
@ -1,247 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.server.pm;
|
||||
|
||||
import android.content.pm.PackageParser;
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.Resources.NotFoundException;
|
||||
import android.net.Uri;
|
||||
import android.os.FileUtils;
|
||||
import android.test.AndroidTestCase;
|
||||
import android.util.DisplayMetrics;
|
||||
|
||||
import com.android.frameworks.servicestests.R;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.InputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Test the {@link SELinuxMMAC} functionality. An emphasis is placed on testing the
|
||||
* seinfo assignments that result from various mac_permissions.xml files. To run these
|
||||
* tests individually use the following set of commands:
|
||||
*
|
||||
* <pre>
|
||||
* {@code
|
||||
* cd $ANDROID_BUILD_TOP
|
||||
* make -j8 FrameworksServicesTests
|
||||
* adb install -r out/target/product/mako/data/app/FrameworksServicesTests.apk
|
||||
* adb shell am instrument -w -e class com.android.server.pm.SELinuxMMACTests com.android.frameworks.servicestests/android.test.InstrumentationTestRunner
|
||||
* }
|
||||
*
|
||||
*/
|
||||
public class SELinuxMMACTests extends AndroidTestCase {
|
||||
|
||||
private static final String TAG = "SELinuxMMACTests";
|
||||
|
||||
private static File MAC_INSTALL_TMP;
|
||||
private static File APK_INSTALL_TMP;
|
||||
|
||||
private static final String MAC_INSTALL_TMP_NAME = "macperms_test_policy";
|
||||
private static final String APK_INSTALL_TMP_NAME = "test_install.apk";
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
|
||||
// Use the test apps data directory as scratch space
|
||||
File filesDir = mContext.getFilesDir();
|
||||
assertNotNull(filesDir);
|
||||
|
||||
// Need a tmp file to hold mmac policy
|
||||
MAC_INSTALL_TMP = new File(filesDir, MAC_INSTALL_TMP_NAME);
|
||||
|
||||
// Need a tmp file to hold the apk
|
||||
APK_INSTALL_TMP = new File(filesDir, APK_INSTALL_TMP_NAME);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void tearDown() throws Exception {
|
||||
super.tearDown();
|
||||
|
||||
// Just in case tmp files still exist
|
||||
MAC_INSTALL_TMP.delete();
|
||||
APK_INSTALL_TMP.delete();
|
||||
}
|
||||
|
||||
/**
|
||||
* Fake an app install. Simply call the PackageParser to parse and save the
|
||||
* contents of the app.
|
||||
*/
|
||||
private PackageParser.Package parsePackage(Uri packageURI) {
|
||||
// Package archive parsing
|
||||
String archiveFilePath = packageURI.getPath();
|
||||
PackageParser packageParser = new PackageParser(archiveFilePath);
|
||||
File sourceFile = new File(archiveFilePath);
|
||||
DisplayMetrics metrics = new DisplayMetrics();
|
||||
metrics.setToDefaults();
|
||||
PackageParser.Package pkg = packageParser.parsePackage(sourceFile,
|
||||
archiveFilePath, metrics, 0);
|
||||
assertNotNull(pkg);
|
||||
assertNotNull(pkg.packageName);
|
||||
|
||||
// Collect the certs for this package
|
||||
boolean savedCerts = packageParser.collectCertificates(pkg, 0);
|
||||
assertTrue(savedCerts);
|
||||
|
||||
return pkg;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dump the contents of a resource to a file. This is just an ancillary function
|
||||
* used for copying the apk and mac_permissions.xml policy files.
|
||||
*/
|
||||
private Uri getResourceURI(int fileResId, File outFile) {
|
||||
try (InputStream is = mContext.getResources().openRawResource(fileResId)) {
|
||||
boolean copied = FileUtils.copyToFile(is, outFile);
|
||||
assertTrue(copied);
|
||||
} catch (NotFoundException | IOException ex) {
|
||||
fail("Expecting to load resource with id: " + fileResId + ". " + ex);
|
||||
}
|
||||
|
||||
return Uri.fromFile(outFile);
|
||||
}
|
||||
|
||||
/**
|
||||
* Takes the policy xml file as a resource, the apk as a resource and the expected
|
||||
* seinfo string. Determines if the assigned seinfo string matches the passed string.
|
||||
*/
|
||||
private void checkSeinfo(int policyRes, int apkRes, String expectedSeinfo) {
|
||||
// Grab policy file as a uri
|
||||
Uri policyURI = getResourceURI(policyRes, MAC_INSTALL_TMP);
|
||||
|
||||
// Parse the policy file
|
||||
boolean parsed = SELinuxMMAC.readInstallPolicy(policyURI.getPath());
|
||||
assertTrue(parsed);
|
||||
|
||||
// Grab the apk as a uri
|
||||
Uri apkURI = getResourceURI(apkRes, APK_INSTALL_TMP);
|
||||
|
||||
// "install" the apk
|
||||
PackageParser.Package pkg = parsePackage(apkURI);
|
||||
|
||||
// Assign the apk an seinfo value
|
||||
SELinuxMMAC.assignSeinfoValue(pkg);
|
||||
|
||||
// Check for expected seinfo against assigned seinfo value
|
||||
String actualSeinfo = pkg.applicationInfo.seinfo;
|
||||
if (expectedSeinfo == null) {
|
||||
assertNull(actualSeinfo);
|
||||
} else {
|
||||
assertEquals(expectedSeinfo, actualSeinfo);
|
||||
}
|
||||
|
||||
// delete policy and apk
|
||||
MAC_INSTALL_TMP.delete();
|
||||
APK_INSTALL_TMP.delete();
|
||||
}
|
||||
|
||||
/*
|
||||
* Start of the SElinuxMMAC tests
|
||||
*/
|
||||
|
||||
// Requested policy file doesn't exist
|
||||
public void test_INSTALL_POLICY_BADPATH() {
|
||||
boolean ret = SELinuxMMAC.readInstallPolicy("/d/o/e/s/n/t/e/x/i/s/t");
|
||||
assertFalse(ret);
|
||||
}
|
||||
|
||||
/*
|
||||
* Raw resource xml file names can be decoded with:
|
||||
* c = signature stanza included
|
||||
* s = seinfo tag attached
|
||||
* p = package tag attached
|
||||
* d = default stanza included
|
||||
* n = means the next abbreviation is missing
|
||||
*
|
||||
* Example: R.raw.mmac_csps_ds.xml would translate to a signer stanza
|
||||
* with a seinfo tag attached followed by an inner child package tag which
|
||||
* has an seinfo tag. Also, there is a default stanza with an attached
|
||||
* seinfo tag.
|
||||
*/
|
||||
|
||||
// signer stanza (seinfo, no package), no default stanza : match signer
|
||||
public void test_CSNP_ND() {
|
||||
checkSeinfo(R.raw.mmac_csnp_nd, R.raw.signed_platform, "signer");
|
||||
}
|
||||
|
||||
// signer stanza (seinfo, no package), no default stanza : match nothing
|
||||
public void test_CSNP_ND_2() {
|
||||
checkSeinfo(R.raw.mmac_csnp_nd, R.raw.signed_release, null);
|
||||
}
|
||||
|
||||
// signer stanza (seinfo, package), no default stanza : match inner package
|
||||
public void test_CSPS_ND() {
|
||||
checkSeinfo(R.raw.mmac_csps_nd, R.raw.signed_platform, "package");
|
||||
}
|
||||
|
||||
// signer stanza (seinfo, package), no default stanza : match nothing
|
||||
public void test_CSPS_ND_2() {
|
||||
checkSeinfo(R.raw.mmac_csps_nd, R.raw.signed_release, null);
|
||||
}
|
||||
|
||||
// signer stanza (no seinfo, package), no default stanza : match inner package
|
||||
public void test_CNSPS_ND() {
|
||||
checkSeinfo(R.raw.mmac_cnsps_nd, R.raw.signed_platform, "package");
|
||||
}
|
||||
|
||||
// signer stanza (no seinfo, package), no default stanza : match nothing
|
||||
public void test_CNSPS_ND_2() {
|
||||
checkSeinfo(R.raw.mmac_cnsps_nd, R.raw.signed_release, null);
|
||||
}
|
||||
|
||||
// signer stanza (seinfo, no package), default stanza : match signer
|
||||
public void test_CSNP_DS() {
|
||||
checkSeinfo(R.raw.mmac_csnp_ds, R.raw.signed_platform, "signer");
|
||||
}
|
||||
|
||||
// signer stanza (seinfo, no package), default stanza : match default
|
||||
public void test_CSNP_DS_2() {
|
||||
checkSeinfo(R.raw.mmac_csnp_ds, R.raw.signed_release, "default");
|
||||
}
|
||||
|
||||
// signer stanza (seinfo, package), default stanza : match inner package
|
||||
public void test_CSPS_DS() {
|
||||
checkSeinfo(R.raw.mmac_csps_ds, R.raw.signed_platform, "package");
|
||||
}
|
||||
|
||||
// signer stanza (seinfo, package), default stanza : match default
|
||||
public void test_CSPS_DS_2() {
|
||||
checkSeinfo(R.raw.mmac_csps_ds, R.raw.signed_release, "default");
|
||||
}
|
||||
|
||||
// signer stanza (no seinfo, package), default stanza : match inner package
|
||||
public void test_CNSPS_DS() {
|
||||
checkSeinfo(R.raw.mmac_cnsps_ds, R.raw.signed_platform, "package");
|
||||
}
|
||||
|
||||
// signer stanza (no seinfo, package), default stanza : match default
|
||||
public void test_CNSPS_DS_2() {
|
||||
checkSeinfo(R.raw.mmac_cnsps_ds, R.raw.signed_release, "default");
|
||||
}
|
||||
|
||||
// no signer stanza, default stanza : match default
|
||||
public void test_NC_DS() {
|
||||
checkSeinfo(R.raw.mmac_nc_ds, R.raw.signed_platform, "default");
|
||||
}
|
||||
|
||||
// Test for empty policy (i.e. no stanzas at all) : match nothing
|
||||
public void test_NC_ND() {
|
||||
checkSeinfo(R.raw.mmac_nc_nd, R.raw.signed_platform, null);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user