Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void -[MDSDiskStorePolicy resolve](void * self, void * _cmd) {
- rbx = self;
- var_30 = *___stack_chk_guard;
- r14 = *_kMDSPreferencesName;
- *(int8_t *)0x1001b72f0 = CFPreferencesGetAppBooleanValue(@"ExternalVolumesIgnore", r14, 0x0);
- rax = CFPreferencesGetAppBooleanValue(@"ExternalVolumesDefaultOff", r14, 0x0);
- *(int8_t *)0x1001b72f1 = rax;
- if (*(int8_t *)0x1001b72f0 != 0x0) {
- sub_10006bed8("(%s) %s: \"ExternalVolumesIgnore\" is set. All external volumes (except backup) will be ignored", 0x100129836, 0x10012d1a6, rcx, r8, r9, stack[2048]);
- rcx = *(int8_t *)0x1001b72f0 != 0x0 ? 0x1 : 0x0;
- rax = *(int8_t *)0x1001b72f1;
- }
- else {
- rcx = 0x0;
- }
- if ((rax != 0x0) && (rcx == 0x0)) {
- sub_10006bed8("(%s) %s: \"ExternalVolumesDefaultOff\" is set. All external volumes (except backup) will default off, override with mdutil -i on", 0x100129836, 0x10012d1a6, rcx, r8, r9, stack[2048]);
- }
- rdi = rbx->_volumeDisk;
- rax = [rdi isBackupVolume];
- rbx->_isBackupVolume = rax;
- [rbx setPredicate:@"is.backupvolume" value:sign_extend_64(rax)];
- rax = [rbx->_volumeDisk isMobileBackups];
- rsi = @selector(setPredicate:value:);
- rdx = @"is.mobilebackups";
- rdi = rbx;
- if (rax != 0x0) {
- _objc_msgSend(rdi, rsi, rdx, 0x1);
- [rbx setPredicate:@"is.network" value:0x0];
- [rbx setPredicate:@"is.local" value:0x1];
- rdx = @"is.alreadyindexed";
- [rbx setPredicate:rdx value:0x1];
- }
- else {
- _objc_msgSend(rdi, rsi);
- }
- rbx->_disallowFSOnly = rbx->_isBackupVolume;
- rax = [rbx class];
- rax = [rax obtainPolicyRules];
- r8 = rbx->_predicates;
- rcx = rax;
- r14 = rax;
- rax = [rbx evaluateFor:@"PolicyLocation" using:rcx against:r8 defaultValue:0x3 expressions:@"Copied", 0x0, @"MasterSlave", 0x1, @"Local", 0x2, 0x0];
- rbx->_defaultPolicyLocation = rax;
- rbx->_isLocal = rax != 0x3 ? 0x1 : 0x0;
- rax = [rbx indexMDSDisk];
- rax = [rax isLowDiskSpace];
- rbx->_isLowDiskSpace = rax;
- [rbx setPredicate:@"is.lowdiskspace" value:sign_extend_64(rax)];
- [rbx setPredicate:@"is.externalvolumes.ignore" value:sign_extend_64(*(int8_t *)0x1001b72f0)];
- [rbx setPredicate:@"is.externalvolumes.defaultoff" value:sign_extend_64(*(int8_t *)0x1001b72f1)];
- rax = rbx->_defaultPolicyLocation;
- if (rax > 0x3) goto loc_10006f983;
- loc_10006f927:
- switch (sign_extend_64(*(int32_t *)(0x10007024c + rax * 0x4)) + 0x10007024c) {
- case 0:
- rsi = @selector(setPredicate:value:);
- break;
- case 1:
- rsi = @selector(setPredicate:value:);
- break;
- case 2:
- rsi = @selector(setPredicate:value:);
- break;
- case 3:
- rsi = @selector(setPredicate:value:);
- break;
- }
- _objc_msgSend(rbx, rsi);
- goto loc_10006f983;
- loc_10006f983:
- [rbx setPredicate:@"is.backupstore" value:0x1, r8];
- r8 = rbx->_neverIndex;
- rbx->_defaultSearchLevelBackupStore = [rbx evaluateFor:@"PolicySearch" using:r14 against:r8 defaultValue:0x0 expressions:@"Off", 0x0, @"FSSearchOnly", 0x1, @"ReadOnly", 0x2, @"ReadWrite", 0x3, 0x0];
- r8 = rbx->_neverIndex;
- rbx->_defaultPolicyControlBackupStore = [rbx evaluateFor:@"PolicyControl" using:r14 against:r8 defaultValue:0x0 expressions:@"Default", 0x0, @"Lower", 0x1, @"Config", 0x2, 0x0];
- [rbx setPredicate:@"is.backupstore" value:0x0, r8];
- r8 = rbx->_neverIndex;
- rbx->_defaultSearchLevel = [rbx evaluateFor:@"PolicySearch" using:r14 against:r8 defaultValue:0x0 expressions:@"Off", 0x0, @"FSSearchOnly", 0x1, @"ReadOnly", 0x2, @"ReadWrite", 0x3, 0x0];
- r8 = rbx->_neverIndex;
- rbx->_defaultPolicyAsk = [rbx evaluateFor:@"PolicyAsk" using:r14 against:r8 defaultValue:0x3 expressions:@"AskEveryTime", 0x0, @"AskOnce", 0x1, @"AskNew", 0x2, 0x0];
- r8 = rbx->_neverIndex;
- stack[2048] = @"Default";
- rbx->_defaultPolicyControl = [rbx evaluateFor:@"PolicyControl" using:r14 against:r8 defaultValue:0x0 expressions:stack[2048], 0x0, @"Lower", 0x1, @"Config", 0x2, 0x0];
- rbx->_neverIndex = 0x0;
- rbx->_neverIndexUnlessRootFS = 0x0;
- COND = rbx->_defaultSearchLevel != 0x0;
- if (((COND) || (rbx->_defaultSearchLevelBackupStore != 0x0)) || (rbx->_defaultPolicyControl != 0x0)) goto loc_10006fc46;
- loc_10006fe07:
- [rbx setPredicate:@"status.neverindex" value:sign_extend_64(rbx->_neverIndex)];
- rax = rbx->_defaultPolicyControl;
- if (rax != 0x1) goto loc_10006fe49;
- loc_10006fe32:
- rbx->_minimumSearchLevel = 0x0;
- rax = *objc_ivar_offset_MDSDiskStorePolicy__defaultSearchLevel;
- goto loc_10006fe80;
- loc_10006fe80:
- rbx->_maximumSearchLevel = *(int32_t *)(rbx + rax);
- goto loc_10006fe8d;
- loc_10006fe8d:
- rax = rbx->_defaultPolicyControlBackupStore;
- if (rax == 0x1) {
- rbx->_minimumSearchLevelBackupStore = 0x0;
- rbx->_maximumSearchLevelBackupStore = rbx->_defaultSearchLevelBackupStore;
- rsi = *objc_ivar_offset_MDSDiskStorePolicy__volumeDisk;
- }
- else {
- rsi = *objc_ivar_offset_MDSDiskStorePolicy__volumeDisk;
- if (rax == 0x2) {
- rbx->_minimumSearchLevelBackupStore = 0x0;
- rbx->_maximumSearchLevelBackupStore = 0x3;
- }
- else {
- rbx->_minimumSearchLevelBackupStore = rbx->_defaultSearchLevelBackupStore;
- rbx->_maximumSearchLevelBackupStore = rbx->_defaultSearchLevelBackupStore;
- }
- }
- [*(rbx + rsi) copyCPath:var_C30];
- rax = *(int32_t *)(0x10018b7f0 + 0x14);
- if (rax >= 0x5) {
- rcx = [rbx->_predicates description];
- sub_10006bed8("(%s) %s: predicates:%@ (%s)", 0x100128da7, 0x10012d081, rcx, var_C30, 0x0, stack[2048]);
- rax = *(int32_t *)(0x10018b7f0 + 0x14);
- }
- if (rax >= 0x4) {
- rcx = rbx->_defaultPolicyLocation;
- sub_10006bed8("(%s) %s: default PolicyLocation:%d (%s)", 0x100129343, 0x10012d081, rcx, var_C30, 0x0, stack[2048]);
- if (*(int32_t *)(0x10018b7f0 + 0x14) >= 0x4) {
- rcx = rbx->_defaultPolicyAsk;
- sub_10006bed8("(%s) %s: default PolicyAsk:%d (%s)", 0x100129343, 0x10012d081, rcx, var_C30, 0x0, stack[2048]);
- if (*(int32_t *)(0x10018b7f0 + 0x14) >= 0x4) {
- rcx = rbx->_defaultPolicyControl;
- sub_10006bed8("(%s) %s: default PolicyControl:%d (%s)", 0x100129343, 0x10012d081, rcx, var_C30, 0x0, stack[2048]);
- if (*(int32_t *)(0x10018b7f0 + 0x14) >= 0x4) {
- rcx = rbx->_defaultSearchLevel;
- sub_10006bed8("(%s) %s: default DefaultSearch:%d (%s)", 0x100129343, 0x10012d081, rcx, var_C30, 0x0, stack[2048]);
- if (*(int32_t *)(0x10018b7f0 + 0x14) >= 0x4) {
- rcx = rbx->_minimumSearchLevel;
- sub_10006bed8("(%s) %s: default MinimumSearch:%d (%s)", 0x100129343, 0x10012d081, rcx, var_C30, 0x0, stack[2048]);
- if (*(int32_t *)(0x10018b7f0 + 0x14) >= 0x4) {
- rcx = rbx->_maximumSearchLevel;
- sub_10006bed8("(%s) %s: default MaximumSearch:%d (%s)", 0x100129343, 0x10012d081, rcx, var_C30, 0x0, stack[2048]);
- if (*(int32_t *)(0x10018b7f0 + 0x14) >= 0x4) {
- rcx = rbx->_defaultPolicyControlBackupStore;
- sub_10006bed8("(%s) %s: default PolicyControlBackupStore:%d (%s)", 0x100129343, 0x10012d081, rcx, var_C30, 0x0, stack[2048]);
- if (*(int32_t *)(0x10018b7f0 + 0x14) >= 0x4) {
- rcx = rbx->_defaultSearchLevelBackupStore;
- sub_10006bed8("(%s) %s: default DefaultSearchBackupStore:%d (%s)", 0x100129343, 0x10012d081, rcx, var_C30, 0x0, stack[2048]);
- if (*(int32_t *)(0x10018b7f0 + 0x14) >= 0x4) {
- rcx = rbx->_minimumSearchLevelBackupStore;
- sub_10006bed8("(%s) %s: default MinimumSearchBackupStore:%d (%s)", 0x100129343, 0x10012d081, rcx, var_C30, 0x0, stack[2048]);
- if (*(int32_t *)(0x10018b7f0 + 0x14) >= 0x4) {
- rcx = rbx->_maximumSearchLevelBackupStore;
- sub_10006bed8("(%s) %s: default MaximumSearchBackupStore:%d (%s)", 0x100129343, 0x10012d081, rcx, var_C30, 0x0, stack[2048]);
- if (*(int32_t *)(0x10018b7f0 + 0x14) >= 0x4) {
- rcx = sign_extend_64(rbx->_isLocal);
- sub_10006bed8("(%s) %s: isLocal:%d (%s)", 0x100129343, 0x10012d081, rcx, var_C30, 0x0, stack[2048]);
- if (*(int32_t *)(0x10018b7f0 + 0x14) >= 0x4) {
- rax = rbx->_localName;
- rcx = @"<none>";
- if (rax != 0x0) {
- rcx = rax;
- }
- sub_10006bed8("(%s) %s: localName:%@ (%s)", 0x100129343, 0x10012d081, rcx, var_C30, 0x0, stack[2048]);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- if (*___stack_chk_guard != var_30) {
- __stack_chk_fail();
- }
- return;
- loc_10006fe49:
- if (rax != 0x2) goto loc_10006fe6c;
- loc_10006fe4e:
- rbx->_minimumSearchLevel = 0x0;
- rbx->_maximumSearchLevel = 0x3;
- goto loc_10006fe8d;
- loc_10006fe6c:
- rax = *objc_ivar_offset_MDSDiskStorePolicy__defaultSearchLevel;
- rbx->_minimumSearchLevel = *(int32_t *)(rbx + rax);
- goto loc_10006fe80;
- loc_10006fc46:
- r15 = [rbx->_volumeDisk copyCPath:var_830];
- r14 = sub_100067006(r15, ".metadata_never_index", var_430, *objc_ivar_offset_MDSDiskStorePolicy__defaultPolicyControl);
- if ((r15 == 0x0) || (strstr(r15, "/.com.apple.FileVault.") == 0x0)) goto loc_10006fcf0;
- loc_10006fc9a:
- rbx->_neverIndex = 0x1;
- rbx->_defaultSearchLevel = 0x0;
- rbx->_defaultPolicyControl = 0x0;
- if (*(int32_t *)(0x10018b7f0 + 0x14) >= 0x4) {
- sub_10006bed8("(%s) %s: Found pre-FileVault Image:%s", 0x100129343, 0x10012d081, r15, r8, 0x0, stack[2048]);
- }
- goto loc_10006fe07;
- loc_10006fcf0:
- if (r14 == 0x0) goto loc_10006fe07;
- loc_10006fcf9:
- rax = stat$INODE64(r14, var_CC0);
- if (rax == 0x0) goto loc_10006fdae;
- loc_10006fd10:
- __strlcat_chk(r14, "_unless_rootfs", 0x400, 0xffffffffffffffff);
- rax = stat$INODE64(r14, var_CC0);
- if (rax != 0x0) goto loc_10006fe07;
- loc_10006fd42:
- rax = [rbx->_volumeDisk isRootFS];
- r15 = 0x1;
- if (rax == 0x0) {
- rax = [rbx->_volumeDisk isBootableVolume];
- if (rax != 0x0) {
- rbx->_neverIndexUnlessRootFS = 0x1;
- r15 = 0x0;
- }
- }
- if (*(int32_t *)(0x10018b7f0 + 0x14) < 0x4) goto loc_10006fe07;
- loc_10006fd94:
- rdi = "(%s) %s: Found metadata_never_index_unless_rootfs token (ignored:%d):%s";
- rcx = r15;
- goto loc_10006fdfd;
- loc_10006fdfd:
- sub_10006bed8(rdi, 0x100129343, 0x10012d081, rcx, r14, 0x0, stack[2048]);
- goto loc_10006fe07;
- loc_10006fdae:
- if (rbx->_isBackupVolume == 0x0) {
- rbx->_neverIndex = 0x1;
- rbx->_defaultSearchLevel = 0x0;
- rbx->_defaultPolicyControl = 0x0;
- }
- if (*(int32_t *)(0x10018b7f0 + 0x14) < 0x4) goto loc_10006fe07;
- loc_10006fde3:
- rcx = sign_extend_64(rbx->_isBackupVolume);
- rdi = "(%s) %s: Found metadata_never_index token (ignored:%d):%s";
- goto loc_10006fdfd;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement