| 1801 | } |
| 1802 | |
| 1803 | LOADER_ENTRY* LOADER_ENTRY::SubMenuKextInjectMgmt() |
| 1804 | { |
| 1805 | LOADER_ENTRY *SubEntry; |
| 1806 | REFIT_MENU_SCREEN *SubScreen; |
| 1807 | XStringW kextDir; |
| 1808 | // UINTN i; |
| 1809 | XString8 ShortOSVersion; |
| 1810 | // CHAR16 *UniSysVer = NULL; |
| 1811 | |
| 1812 | SubEntry = new LOADER_ENTRY(); |
| 1813 | NewEntry_(SubEntry, &SubScreen, ActionEnter, SCREEN_SYSTEM, "Block injected kexts->"_XS8); |
| 1814 | SubEntry->Flags = Flags; |
| 1815 | if (OSVersion.notEmpty()) { |
| 1816 | // DBG("chosen os %s\n", ChosenOS); |
| 1817 | //shorten os version 10.11.6 -> 10.11 |
| 1818 | for (int i = 0; i < 8; i++) { |
| 1819 | if (OSVersion[i] == '\0') { |
| 1820 | break; |
| 1821 | } |
| 1822 | if (((i > 2) && (OSVersion[i] == '.')) || (i == 5)) { |
| 1823 | break; |
| 1824 | } |
| 1825 | ShortOSVersion += OSVersion[i]; |
| 1826 | } |
| 1827 | |
| 1828 | SubScreen->AddMenuInfoLine_f("Block injected kexts for target version of macOS: %s", ShortOSVersion.c_str()); |
| 1829 | |
| 1830 | // Add kext from 10 |
| 1831 | { |
| 1832 | SubScreen->AddMenuEntry(SubMenuKextBlockInjection("10"_XS8), true); |
| 1833 | |
| 1834 | XString8 DirName; |
| 1835 | if (OSTYPE_IS_OSX_INSTALLER(LoaderType)) { |
| 1836 | DirName = "10_install"_XS8; |
| 1837 | } |
| 1838 | else { |
| 1839 | if (OSTYPE_IS_OSX_RECOVERY(LoaderType)) { |
| 1840 | DirName = "10_recovery"_XS8; |
| 1841 | } |
| 1842 | else { |
| 1843 | DirName = "10_normal"_XS8; |
| 1844 | } |
| 1845 | } |
| 1846 | SubScreen->AddMenuEntry(SubMenuKextBlockInjection(DirName), true); |
| 1847 | } |
| 1848 | |
| 1849 | // Add kext from 10.{version} |
| 1850 | { |
| 1851 | XString8 DirName; |
| 1852 | DirName.takeValueFrom(ShortOSVersion); |
| 1853 | SubScreen->AddMenuEntry(SubMenuKextBlockInjection(DirName), true); |
| 1854 | |
| 1855 | if (OSTYPE_IS_OSX_INSTALLER(LoaderType)) { |
| 1856 | DirName.S8Printf("%s_install", ShortOSVersion.c_str()); |
| 1857 | } |
| 1858 | else { |
| 1859 | if (OSTYPE_IS_OSX_RECOVERY(LoaderType)) { |
| 1860 | DirName.S8Printf("%s_recovery", ShortOSVersion.c_str()); |
nothing calls this directly
no test coverage detected