sm6225-common: udfps: Read the whole struct at once for stock compatibility

Change-Id: I0ed3e7de1cafccf27f417fad23000b87f2b2dad5
This commit is contained in:
Arian
2024-03-14 17:54:59 +01:00
committed by itsnouralawad
parent 4c49b01855
commit 03a9b83a4e

View File

@@ -62,24 +62,23 @@ static bool readBool(int fd) {
}
static disp_event_resp* parseDispEvent(int fd) {
disp_event header;
ssize_t headerSize = read(fd, &header, sizeof(header));
if (headerSize < sizeof(header)) {
LOG(ERROR) << "unexpected display event header size: " << headerSize;
char event_data[1024] = {0};
ssize_t size;
memset(event_data, 0x0, sizeof(event_data));
size = read(fd, event_data, sizeof(event_data));
if (size < 0) {
LOG(ERROR) << "read fod event failed";
return nullptr;
}
struct disp_event_resp* response =
reinterpret_cast<struct disp_event_resp*>(malloc(header.length));
response->base = header;
int dataLength = response->base.length - sizeof(response->base);
ssize_t dataSize = read(fd, &response->data, dataLength);
if (dataSize < dataLength) {
LOG(ERROR) << "unexpected display event data size: " << dataSize;
if (size < sizeof(struct disp_event)) {
LOG(ERROR) << "Invalid event size " << size << ", expect at least "
<< sizeof(struct disp_event);
return nullptr;
}
return response;
return (struct disp_event_resp*)&event_data[0];
}
} // anonymous namespace