FreeCalypso > hg > fc-magnetite
view src/ui3/mfw/mfw_sim.h @ 516:1ed9de6c90bd
src/g23m-gsm/sms/sms_for.c: bogus malloc removed
The new error handling code that was not present in TCS211 blob version
contains a malloc call that is bogus for 3 reasons:
1) The memory allocation in question is not needed in the first place;
2) libc malloc is used instead of one of the firmware's proper ways;
3) The memory allocation is made inside a function and then never freed,
i.e., a memory leak.
This bug was caught in gcc-built FreeCalypso fw projects (Citrine
and Selenite) because our gcc environment does not allow any use of
libc malloc (any reference to malloc produces a link failure),
but this code from TCS3.2 is wrong even for Magnetite: if this code
path is executed repeatedly over a long time, the many small allocations
made by this malloc call without a subsequent free will eventually
exhaust the malloc heap provided by the TMS470 environment, malloc will
start returning NULL, and the bogus code will treat it as an error.
Because the memory allocation in question is not needed at all,
the fix entails simply removing it.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 22 Jul 2018 06:04:49 +0000 |
parents | e8ddbb0837ed |
children |
line wrap: on
line source
/* +--------------------------------------------------------------------+ | PROJECT: GSM-MFW (?) $Workfile:: mfw_sim.h $| | $Author:: Vo $Revision:: 1 $| | CREATED: 14.10.98 $Modtime:: 20.03.00 14:09 $| | STATE : code | +--------------------------------------------------------------------+ History: Apr 03, 2007 ER: OMAPS00122561 x0pleela Description: [ACI] Phone lock feature has to be supported by ACI Solution: Phone Lock ER implementation Sep 26, 2006 DR: OMAPS00095524 x0pleela Description:Implement 2 missing SIM Lock types Solution: Made the following changes - Added new macros MFW_SIM_PBLOCK_REQ, MFW_SIM_PBLOCK for Blocked Network category xashmic 9 Sep 2006, OMAPS00092732 USBMS ER Sep 08, 2006 DR: OMAPS00091250 x0pleela Description:The phone resets if no MEPD data is presented Solution: Added a new event MFW_MEPD_INVALID which will be returned to BMI to display MEPD not present to the user July 21, 2006 ER: OMAPS00087586, OMAPS00087587 x0pleela Description: OMAPS00087586: MasterKey funtion in TCS3.2 SW OMAPS00087587: Time Penaly feature extend handset security Solution:Made the following changes Defined new macros MFW_SIM_MKEY( Master Unlocking during bootup) MFW_SIM_MKEYM (Master Unlocking through menu) May 26, 2006 ER: OMAPS00079607 x0012849 :Jagannatha M Description: CPHS: Display 'charge/Timers' menu based on AOC ( Advice of charge ) Solution:Made the following changes 1. Defined MFW_SIM_NO_AOC with value 11 May 15, 2006 DR: OMAPS00067919 x0pleela Description: SIMP:On repeat Depersonalisation with invalid password MEPD unblock key should be asked not Puk1. Solution:Made the following changes 1. Added new macro BOOTUP_OK 2. Added new enumeration T_MFW_SIMP_CLCK_FLAG Nov 24, 2005 DR: OMAPS00045909 - Shashi Shekar B.S. Description: Improve IMEI control mechanism Solution : When MMI calls sAT_PLUSCFUN, if an IMEI invalid error is returned, we will block on that screen & will not allow the user to browse menus further, since the PS will not be booted at all!!! July 19, 2005 REF: CRR LOCOSTO-ENH-28173 xpradipg Description: To provide MMI Support to enable/disable/change password and query all the Personalization locks Solution: Integration of the changes for the same provided by the soldel team *********************************************************************** PURPOSE: Types definitions for SIM management of MMI framework */ #ifndef DEF_MFW_SIM #define DEF_MFW_SIM /*#ifndef BMI_TEST_MC_SIM_EVENT #define BMI_TEST_MC_SIM_EVENT #endif*/ /* * events are organised as bitmaps */ #define E_SIM_STATUS 0x0001 #define E_SIM_INSERTED 0x0002 #define E_SIM_RESET 0x0004 #define E_SIM_READ_CALLBACK 0x0008/*MC CONQ5862, 13/06/02*, added new event*/ #define E_SIM_ALL_SERVICES 0x000f #define SIM_ACTIVE 0 #define SIM_NOT_ACTIVE 1 #define SIM_STK_RESET 2 // bugfix for SIM refresh #define IMEI_NOT_VALID 3 // Nov 24, 2005, a0876501, DR: OMAPS00045909 typedef struct { UBYTE sim_procedure; UBYTE sim_status; UBYTE sim_operation_mode; UBYTE sim_pin_retries; UBYTE sim_status_type; } T_MFW_SIM_STATUS; /* type definition for E_SIM_STATUS event */ typedef struct { UBYTE type; /* MFW_SIM_PIN1/MFW_SIM_PIN2 */ UBYTE set; /* MFW_SIM_ENABLE/MFW_SIM_DISABLE */ UBYTE stat ; /* MFW_SIM_NO_PIN/MFW_SIM_PIN_REQ/MFW_SIM_PIN2_REQ */ } T_MFW_SIM_PIN_STATUS; /*MC CONQ5862, 13/06/02*, added new data struct for E_SIM_READ_CALLBACK event*/ typedef struct { SHORT error_code; UBYTE* read_buffer; } T_MFW_READ_CALLBACK; /* SIM configuration information */ typedef struct { UBYTE access_acm; UBYTE access_acmmax; UBYTE access_puct; } T_MFW_AOC_ACCESS; //x0pleela 07 Mar, 2007 ER: OMAPS00122561 #ifdef FF_PHONE_LOCK #define MFW_PH_LOCK_ENABLE 1 #define MFW_PH_LOCK_DISABLE 2 #define MFW_PH_LOCK_FAILURE 3 #define MFW_PH_LOCK 1 /* Phone lock type */ #define MFW_AUTO_PH_LOCK 2 /* Auto Phone lock type */ #endif /* FF_PHONE_LOCK */ #ifdef SIM_PERS #define UNBLOCK_SUCESS 1 #define UNBLOCK_FAILURE 2 #define BOOTUP_LOCK_SUCCESS 3 #define BOOTUP_LOCK_FAILURE 4 #define BOOTUP_OK 5 //x0pleela 21 Apr, 2006 DR: OMAPS00067919 #define MFW_SIM_NOT_BLOCKED 10 #define MFW_SIM_PERM_BLOCKED 11 #endif /* definition of SIM procedure in E_SIM_STATUS event */ #define MFW_SIM_ACTIVATION 1 #define MFW_SIM_VERIFY 2 #define MFW_SIM_UNBLOCK 3 #define MFW_SIM_CHANGE 4 #define MFW_SIM_ENABLE 5 #define MFW_SIM_DISABLE 6 #define MFW_SIM_LOCKED 7 #define MFW_SIM_BLOCKED 8 #define MFW_SIM_REMOVED 9 /* definition of SIM operation mode in E_SIM_STATUS event */ #define MFW_SIM_NO_OPERATION 0 #define MFW_SIM_ADN_ENABLED 1 #define MFW_SIM_FDN_ENABLED 2 #define MFW_SIM_ADN_BDN_ENABLED 5 #define MFW_SIM_FDN_BDN_ENABLED 6 /* definition of SIM status in E_SIM_STATUS event */ #define MFW_SIM_PIN_REQ 1 #define MFW_SIM_PUK_REQ 2 #define MFW_SIM_PIN2_REQ 3 #define MFW_SIM_PUK2_REQ 4 #define MFW_SIM_INVALID_CARD 5 #define MFW_SIM_NO_SIM_CARD 6 #define MFW_SIM_NO_PIN 7 #define MFW_SIM_SUCCESS 8 #define MFW_SIM_FAILURE 9 #ifdef SIM_PERS #define MFW_SIM_NLOCK_REQ 10 #define MFW_SIM_NSLOCK_REQ 11 #define MFW_SIM_SPLOCK_REQ 12 #define MFW_SIM_CLOCK_REQ 13 #define MFW_SIM_PLOCK_REQ 14 #define MFW_SIM_PLOCK_ERR 15 #define MFW_SIM_PLOCK_OK 16 #define MFW_MEPD_INVALID 17 //x0pleela 23 Aug, 2006 DR: OMAPS00091250 #define MFW_SIM_PBLOCK_REQ 18 //x0pleela 25 Sep, 2006 ER: OMAPS00095524 #endif #define MFW_SIM_NO_DISABLE 10 /*MC CONQ-5578, PIN disabling forbidden*/ //x0012849: Jagannatha 26 May, 2006 ER: OMAPS00079607 -Support AOC in CPHS #ifdef FF_CPHS #define MFW_SIM_NO_AOC 11 #endif /* Shashi Shekar B.S. DR: OMAPS00045909, Improve IMEI control mechanism */ #define MFW_IMEI_NOT_VALID 20 #define MFW_SIM_PIN1 1 #define MFW_SIM_PUK1 2 #define MFW_SIM_PIN2 3 #define MFW_SIM_PUK2 4 #define MFW_SIM_UNKNOWN 0 #define MFW_SIM_NLOCK 1 #define MFW_SIM_SPLOCK 2 #define MFW_SIM_NSLOCK 3 #define MFW_SIM_CLOCK 4 #define MFW_SIM_PLOCK 5 #define MFW_SIM_UNLOCK_ERR 6 #ifdef SIM_PERS #define MFW_SIM_FC 7 #define MFW_SIM_FCM 8 //x0pleela 20 July, 2006 ER: OMAPS00087586, OMAPS00087587 #define MFW_SIM_MKEY 9 //Master Unlocking during bootup #define MFW_SIM_MKEYM 10 //Master Unlocking through menu #define MFW_MASTER_UNLOCK_ACTIVE 1 //Master unlock enabled #define MFW_MASTER_UNLOCK_DEACTIVE 0 //Master unlock disabled //x0pleela 25 Sep, 2006 ER: OMAPS00095524 #define MFW_SIM_PBLOCK 11 //Blocked Network Type #endif //x0pleela 27 Apr, 2006 DR: OMAPS00067919 #ifdef SIM_PERS typedef enum { SIMP_NONE, SIMP_MENU, SIMP_BOOTUP }T_MFW_SIMP_CLCK_FLAG; #endif /* * SIM Parameter */ typedef union { T_MFW_SIM_STATUS status; T_MFW_READ_CALLBACK callback; } T_MFW_SIM_PARA; #ifdef SIM_PERS extern int C_KEY_REQ; #endif int sim_init (void); MfwHnd sim_create (MfwHnd hWin, MfwEvt event, MfwCb cbfunc); MfwRes sim_delete (MfwHnd h); void sim_verify_pin (UBYTE pin_id, char *pin); void sim_unblock_pin (UBYTE pin_id, char *puk, char *newpin); void sim_change_pin (UBYTE pin_id, UBYTE *alt_pin, UBYTE *new_pin); T_MFW sim_disable_pin (UBYTE *pin);/*SPR 2145, now returns status*/ T_MFW sim_enable_pin (UBYTE *pin);/*SPR 2145, now returns status*/ void sim_exit (void); int sim_pin_count (UBYTE pin_id); int SimHasPin (U8 pin_id); void sim_pin_status (T_MFW_SIM_PIN_STATUS *status); T_MFW sim_serv_table_check (UBYTE serv_num); int sim_check_sim_Plock (void); int sim_check_sim_Nlock (void); int sim_check_sim_SPlock (void); int sim_check_sim_NSlock (void); int sim_check_sim_Clock (void); MfwRes sim_configuration (UBYTE *phase, UBYTE *serv, UBYTE *slen, UBYTE *lang, UBYTE *llen, T_MFW_AOC_ACCESS *access); void sim_save_pref_lang (UBYTE *lang, UBYTE len); T_MFW sim_unlock_sim_lock (UBYTE type, UBYTE *passwd); void sim_activate (void); UBYTE * sim_get_imsi (void); UBYTE sim_simlock_ok (void); void mfwSimRestartPinEntry(void); //xashmic 9 Sep 2006, OMAPS00092732 void sim_enable(void); void sim_disable(void); /* Ciphering */ // CPRImode : #define MFW_SIM_CPRI_NO_SHOW 0 #define MFW_SIM_CPRI_SHOW 1 //Callback function typedef void (* CallbackCPRI)(UBYTE, UBYTE); //Initialize the ciphering indication EXTERN UBYTE sim_init_CPRS (CallbackCPRI func, UBYTE CPRImode ); //TISH, patch for ASTec32515, modified by Jinshu Wang, 2007-06-15 //start EXTERN void sim_invalid_ind(void); //end //x0pleela 03 Aug, 2006 ER: OMAPS00087586, OMAPS00087587 #ifdef SIM_PERS //Set Simp_Busy_State to either TRUE or FALSE based on the ACI's busy error void mfw_simlock_set_busy_state( UBYTE state ); //Get the current value of Simp_Busy_State UBYTE mfw_simlock_get_busy_state( void ); #endif #endif