diff options
Diffstat (limited to 'sim.c')
-rw-r--r-- | sim.c | 82 |
1 files changed, 1 insertions, 81 deletions
@@ -911,8 +911,6 @@ complete: int ipc_sec_rsim_access(struct ipc_message *message) { struct ipc_sec_rsim_access_response_header *header; - struct ipc_sec_rsim_access_usim_response_header *usim_header; - struct sim_file_response sim_file_response; struct ril_request *request; struct ril_client *client; struct ipc_fmt_data *ipc_fmt_data; @@ -922,9 +920,6 @@ int ipc_sec_rsim_access(struct ipc_message *message) #else RIL_SIM_IO *sim_io; #endif - unsigned char *p; - unsigned int offset; - unsigned int i; void *data; size_t size; @@ -966,86 +961,11 @@ int ipc_sec_rsim_access(struct ipc_message *message) switch (sim_io->command) { case SIM_COMMAND_READ_BINARY: case SIM_COMMAND_READ_RECORD: - if (header->length == 0) - break; - - response.simResponse = data2string(data, header->length); - break; case SIM_COMMAND_GET_RESPONSE: if (header->length == 0) break; - if (ipc_fmt_data->sim_icc_type_data.type == 0x01) { - response.simResponse = data2string(data, header->length); - break; - } - - if (header->length < sizeof(struct ipc_sec_rsim_access_usim_response_header)) - break; - - usim_header = (struct ipc_sec_rsim_access_usim_response_header *) data; - - memset(&sim_file_response, 0, sizeof(sim_file_response)); - - offset = sizeof(struct ipc_sec_rsim_access_usim_response_header) + usim_header->offset; - if (offset > header->length) - break; - - offset = usim_header->offset - 2; - p = (unsigned char *) usim_header + offset; - - sim_file_response.file_id[0] = p[0]; - sim_file_response.file_id[1] = p[1]; - - offset = header->length - 2; - p = (unsigned char *) usim_header; - - while (offset > 2) { - if (p[offset] == 0x88) { - offset -= 2; - break; - } - - offset--; - } - - if (offset <= 2) - break; - - p = (unsigned char *) usim_header + offset; - - sim_file_response.file_size[0] = p[0]; - sim_file_response.file_size[1] = p[1]; - - // Fallback to EF - sim_file_response.file_type = SIM_FILE_TYPE_EF; - for (i = 0; i < sim_file_ids_count; i++) { - if (sim_io->fileid == sim_file_ids[i].file_id) { - sim_file_response.file_type = sim_file_ids[i].type; - break; - } - } - - sim_file_response.access_condition[0] = 0x00; - sim_file_response.access_condition[1] = 0xff; - sim_file_response.access_condition[2] = 0xff; - - sim_file_response.file_status = 0x01; - sim_file_response.file_length = 0x02; - - switch (usim_header->file_structure) { - case IPC_SEC_RSIM_FILE_STRUCTURE_TRANSPARENT: - sim_file_response.file_structure = SIM_FILE_STRUCTURE_TRANSPARENT; - break; - case IPC_SEC_RSIM_FILE_STRUCTURE_LINEAR_FIXED: - default: - sim_file_response.file_structure = SIM_FILE_STRUCTURE_LINEAR_FIXED; - break; - } - - sim_file_response.record_length = usim_header->length; - - response.simResponse = data2string((void *) &sim_file_response, sizeof(sim_file_response)); + response.simResponse = data2string(data, header->length); break; case SIM_COMMAND_UPDATE_BINARY: case SIM_COMMAND_UPDATE_RECORD: |