Hi Kristen, On 08/25/2010 11:29 AM, Kristen Carlson Accardi wrote: > --- > src/sim.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ > 1 files changed, 49 insertions(+), 0 deletions(-) > > diff --git a/src/sim.c b/src/sim.c > index 04a708b..dc47901 100644 > --- a/src/sim.c > +++ b/src/sim.c > @@ -88,6 +88,8 @@ struct ofono_sim { > unsigned char efmsisdn_records; > unsigned char *efli; > unsigned char efli_length; > + unsigned char *efimg; > + int efimg_length; > enum ofono_sim_cphs_phase cphs_phase; > unsigned char cphs_service_table[2]; > struct ofono_watchlist *state_watches; > @@ -958,6 +960,46 @@ static void sim_own_numbers_update(struct ofono_sim *sim) > sim_msisdn_read_cb, sim); > } > > +static void sim_efimg_read_cb(int ok, int length, int record, > + const unsigned char *data, > + int record_length, void *userdata) > +{ > + struct ofono_sim *sim = userdata; > + unsigned char *efimg; > + int num_records; > + > + if (!ok) > + return; > + > + num_records = length / record_length; > + > + /* > + * EFimg descriptors are 9 bytes long. > + * Byte 1 of the record is the number of descriptors per record. > + */ > + if ((record_length % 9 != 2) && (record_length % 9 != 1)) > + return; You want to do this check in addition to ensuring record_length is at least 10. Right now records of size 1 and 2 pass this check... Regards, -Denis