NAME=mach0 MH_APP_EXTENSION_SAFE sdb key
FILE=malloc://1024
CMDS=<<EOF
wx cffaedfe07000001030000000200000002000000c0000000000000020000000027000000280000000c00000044594c445f4652414d45574f524b5f504154483d2e0000000000000019000000980000005f5f52455354524943540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000005f5f72657374726963740000000000005f5f5245535452494354000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @ 0
obf
k bin/cur/info/mach0.app_extension_safe
EOF
EXPECT=<<EOF
true
EOF
RUN

NAME=mach0 __RESTRICT section sdb key
FILE=malloc://1024
CMDS=<<EOF
wx cffaedfe07000001030000000200000002000000c0000000000000020000000027000000280000000c00000044594c445f4652414d45574f524b5f504154483d2e0000000000000019000000980000005f5f52455354524943540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000005f5f72657374726963740000000000005f5f5245535452494354000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @ 0
obf
k bin/cur/info/mach0.restrict
EOF
EXPECT=<<EOF
true
EOF
RUN

NAME=mach0 LC_DYLD_ENVIRONMENT sdb key
FILE=malloc://1024
CMDS=<<EOF
wx cffaedfe07000001030000000200000002000000c0000000000000020000000027000000280000000c00000044594c445f4652414d45574f524b5f504154483d2e0000000000000019000000980000005f5f52455354524943540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000005f5f72657374726963740000000000005f5f5245535452494354000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @ 0
obf
k bin/cur/info/mach0.dyld_environment.0
EOF
EXPECT=<<EOF
DYLD_FRAMEWORK_PATH=.
EOF
RUN

NAME=mach0 MH_APP_EXTENSION_SAFE false when unset
FILE=malloc://1024
CMDS=<<EOF
wx cffaedfe0700000103000000020000000000000000000000000000000000000000000000 @ 0
obf
k bin/cur/info/mach0.app_extension_safe
k bin/cur/info/mach0.restrict
EOF
EXPECT=<<EOF
false
false
EOF
RUN

NAME=mach0 ik* quotes section names
FILE=malloc://185
CMDS=<<EOF
wx cffaedfe0700000103000000020000000100000098000000000000000000000019000000980000005f5f5445585400000000000000000000000000000100000000100000000000000000000000000000b900000000000000070000000500000001000000000000005f5f74657874000000000000000000003b216563686f2050574e45443b232323b8000000010000000100000000000000b800000000000000000000000000000000040080000000000000000000000000c3 @ 0
obf
ik*~PWNED
e log.quiet=true
.ik*
?e SAFE
EOF
EXPECT=<<EOF
'@0x68'f mach0_section_;!echo PWNED;###___text
'pf.mach0_section_;!echo PWNED;###___text mach0_section64
SAFE
EOF
RUN
NAME=mach0 rejects truncated section counts
FILE=malloc://327864
CMDS=<<EOF
wx cffaedfe0700000103000000020000000100000098000500000000000000000019000000980005005f5f5445585400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000000 @ 0
e log.quiet=true
obf
iSj
EOF
EXPECT=<<EOF
[]
EOF
RUN
