PIT: unknown version in PIT header has to be protocol version
And in that case there now exists a fifth version of the Odin protocol, seen on Galaxy S9 and newer. In total we have seen these versions (as of January 2022): * 0, on devices from around 2014 or older * 3, on devices from around 2015 * 4, on devices from around 2016 - 2017 * 5, on devices from around 2018 or newerfirst-package-hack
parent
e9a68f6862
commit
e916c679ed
|
@ -211,7 +211,7 @@ void Interface::PrintPit(const PitData *pitData)
|
|||
Interface::Print("Entry Count: %d\n", pitData->GetEntryCount());
|
||||
Interface::Print("Unknown string: %s\n", pitData->GetComTar2());
|
||||
Interface::Print("CPU/bootloader tag: %s\n", pitData->GetCpuBlId());
|
||||
Interface::Print("Version(?): 0x%04x\n", pitData->GetUnknown());
|
||||
Interface::Print("Protocol version: 0x%04x\n", pitData->GetProtocolVersion());
|
||||
|
||||
for (unsigned int i = 0; i < pitData->GetEntryCount(); i++)
|
||||
{
|
||||
|
|
|
@ -69,7 +69,7 @@ PitData::PitData()
|
|||
com_tar2[0] = '\0';
|
||||
cpu_bl_id[0] = '\0';
|
||||
|
||||
unknown_version = 0;
|
||||
protocol_version = 0;
|
||||
}
|
||||
|
||||
PitData::~PitData()
|
||||
|
@ -98,7 +98,7 @@ bool PitData::Unpack(const unsigned char *data)
|
|||
return (false);
|
||||
cpu_bl_id[8]='\0';
|
||||
|
||||
unknown_version = PitData::UnpackShort(data, 24);
|
||||
protocol_version = PitData::UnpackShort(data, 24);
|
||||
|
||||
unsigned int integerValue;
|
||||
unsigned int entryOffset;
|
||||
|
@ -153,7 +153,7 @@ void PitData::Pack(unsigned char *data) const
|
|||
memcpy(&data[8], com_tar2, 8);
|
||||
memcpy(&data[16], cpu_bl_id, 8);
|
||||
|
||||
PitData::PackShort(data, 24, unknown_version);
|
||||
PitData::PackShort(data, 24, protocol_version);
|
||||
|
||||
int entryOffset;
|
||||
|
||||
|
@ -187,7 +187,7 @@ bool PitData::Matches(const PitData *otherPitData) const
|
|||
if (entryCount == otherPitData->entryCount &&
|
||||
(strncmp(com_tar2, otherPitData->com_tar2, 8) == 0) &&
|
||||
(strncmp(cpu_bl_id, otherPitData->cpu_bl_id, 8) == 0) &&
|
||||
unknown_version == otherPitData->unknown_version)
|
||||
protocol_version == otherPitData->protocol_version)
|
||||
{
|
||||
for (unsigned int i = 0; i < entryCount; i++)
|
||||
{
|
||||
|
@ -211,7 +211,7 @@ void PitData::Clear(void)
|
|||
|
||||
cpu_bl_id[0] = '\0';
|
||||
|
||||
unknown_version = 0;
|
||||
protocol_version = 0;
|
||||
|
||||
for (unsigned int i = 0; i < entries.size(); i++)
|
||||
delete entries[i];
|
||||
|
|
|
@ -261,12 +261,12 @@ namespace libpit
|
|||
|
||||
private:
|
||||
|
||||
unsigned int entryCount; // 0x04
|
||||
char com_tar2[8+1]; // 0x08
|
||||
unsigned int entryCount; // 0x04
|
||||
char com_tar2[8+1]; // 0x08
|
||||
|
||||
char cpu_bl_id[8+1]; // 0x10
|
||||
char cpu_bl_id[8+1]; // 0x10
|
||||
|
||||
unsigned short unknown_version; // 0x18
|
||||
unsigned short protocol_version; // 0x18
|
||||
|
||||
// Entries start at 0x1C
|
||||
std::vector<PitEntry *> entries;
|
||||
|
@ -375,9 +375,9 @@ namespace libpit
|
|||
return cpu_bl_id;
|
||||
}
|
||||
|
||||
unsigned int GetUnknown(void) const
|
||||
unsigned int GetProtocolVersion(void) const
|
||||
{
|
||||
return unknown_version;
|
||||
return protocol_version;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue