Skip to content

Commit 3d48f99

Browse files
committed
fix(apple): fix detection of Apple magic header
apparently header magic depends on the endianness
1 parent e6d415d commit 3d48f99

File tree

1 file changed

+9
-4
lines changed
  • vendor/vendor-apple/base/src/main/kotlin/com/malinskiy/marathon/apple/model

1 file changed

+9
-4
lines changed

vendor/vendor-apple/base/src/main/kotlin/com/malinskiy/marathon/apple/model/AppleTestBundle.kt

+9-4
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ private val File.isAppleBinary: Boolean
1717
val header = UByteArray(4)
1818
it.read(header.asByteArray())
1919

20-
return header.contentEquals(AppleTestBundle.FAT_MAGIC) || header.contentEquals(AppleTestBundle.MH_MAGIC) || header.contentEquals(AppleTestBundle.MH_MAGIC_64)
20+
return header.contentEquals(AppleTestBundle.FAT_MAGIC) || header.contentEquals(AppleTestBundle.MH_MAGIC) || header.contentEquals(AppleTestBundle.MH_MAGIC_64) ||
21+
header.contentEquals(AppleTestBundle.FAT_CIGAM) || header.contentEquals(AppleTestBundle.MH_CIGAM) || header.contentEquals(AppleTestBundle.MH_CIGAM_64)
2122
}
2223
}
2324

@@ -139,10 +140,14 @@ class AppleTestBundle(
139140

140141
/**
141142
* See mach-o specification for these
143+
* https://opensource.apple.com/source/xnu/xnu-4570.71.2/EXTERNAL_HEADERS/mach-o/loader.h.auto.html
142144
*/
143145
companion object {
144-
val FAT_MAGIC: UByteArray = ubyteArrayOf(0xca.toUByte(), 0xfe.toUByte(), 0xba.toUByte(), 0xbe.toUByte()).reversedArray()
145-
val MH_MAGIC: UByteArray = ubyteArrayOf(0xfe.toUByte(), 0xed.toUByte(), 0xfa.toUByte(), 0xce.toUByte()).reversedArray()
146-
val MH_MAGIC_64: UByteArray = ubyteArrayOf(0xfe.toUByte(), 0xed.toUByte(), 0xfa.toUByte(), 0xcf.toUByte()).reversedArray()
146+
val FAT_MAGIC: UByteArray = ubyteArrayOf(0xca.toUByte(), 0xfe.toUByte(), 0xba.toUByte(), 0xbe.toUByte())
147+
val FAT_CIGAM = FAT_MAGIC.reversedArray()
148+
val MH_MAGIC: UByteArray = ubyteArrayOf(0xfe.toUByte(), 0xed.toUByte(), 0xfa.toUByte(), 0xce.toUByte())
149+
val MH_CIGAM = MH_MAGIC.reversedArray()
150+
val MH_MAGIC_64: UByteArray = ubyteArrayOf(0xfe.toUByte(), 0xed.toUByte(), 0xfa.toUByte(), 0xcf.toUByte())
151+
val MH_CIGAM_64 = MH_MAGIC_64.reversedArray()
147152
}
148153
}

0 commit comments

Comments
 (0)