From 9512a7c30e4c7457d23f71aa1fce6c4d5a47e0b3 Mon Sep 17 00:00:00 2001 From: jihye kim Date: Wed, 22 Aug 2012 20:56:57 +0900 Subject: [PATCH] migrate rsa git from private git (vmodem) --- debian/changelog | 94 +++++++++++++++++++++++++++++++------- debian/control | 4 +- libvmodem/vgsm_phone.h | 2 +- packaging/vmodemd-emul.spec | 2 +- vmodem/at/at_recv.c | 17 ++++++- vmodem/at/at_rx_security.c | 11 +++-- vmodem/at/at_tx_security.c | 6 +++ vmodem/at/at_tx_sms.c | 18 +++++++- vmodem/include/at/at_rx_security.h | 1 + vmodem/include/at/at_tx_sms.h | 2 + vmodem/oem/oem_rx_security.c | 6 +++ vmodem/oem/oem_tx_security.c | 5 ++ vmodem/server/client.c | 7 ++- vmodem/server/server_rx_security.c | 45 ++++++++++++++++++ vmodem/server/server_rx_sms.c | 14 ++++-- 15 files changed, 203 insertions(+), 31 deletions(-) diff --git a/debian/changelog b/debian/changelog index 80b376b..25c9d1e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,53 +1,115 @@ -vmodemd-emul (0.2.10) unstable; urgency=low +vmodemd-emul (0.2.17) unstable; urgency=low + + * fixed buffer overflow when call forwarding + * Git: slp/pkgs/v/vmodem-daemon-emulator + * Tag: vmodemd-emul_0.2.17 + + -- Sungmin Ha Tue, 14 Aug 2012 16:24:41 +0900 + +vmodemd-emul (0.2.16) unstable; urgency=low + + * modified for block the call and sms when flight mode on or rssi level 0 + * Git: slp/pkgs/v/vmodem-daemon-emulator + * Tag: vmodemd-emul_0.2.16 + + -- Sungmin Ha Thu, 09 Aug 2012 19:39:45 +0900 + +vmodemd-emul (0.2.15) unstable; urgency=low + + * modified for reponse sms + * Git: slp/pkgs/v/vmodem-daemon-emulator + * Tag: vmodemd-emul_0.2.15 + + -- Sungmin Ha Thu, 09 Aug 2012 15:09:02 +0900 + +vmodemd-emul (0.2.13) unstable; urgency=low + + * modified for event injector call list + * Git: slp/pkgs/v/vmodem-daemon-emulator + * Tag: vmodemd-emul_0.2.13 + + -- Sungmin Ha Wed, 08 Aug 2012 18:25:13 +0900 + +vmodemd-emul (0.2.12) unstable; urgency=low + + * implementation added for unexpectedly stop when set fixed dialling number + * Git: slp/pkgs/v/vmodem-daemon-emulator + * Tag: vmodemd-emul_0.2.12 + + -- Sungmin Ha Fri, 03 Aug 2012 18:06:35 +0900 + +vmodemd-emul (0.2.11) unstable; urgency=low * modified default rssi value + * Git: slp/pkgs/v/vmodem-daemon-emulator + * Tag: vmodemd-emul_0.2.11 - -- SungMin Ha Sat, 21 Apr 2012 20:00:28 +0900 + -- Sungmin Ha Sat, 21 Apr 2012 20:35:00 +0900 -vmodemd-emul (0.2.9) unstable; urgency=low +vmodemd-emul (0.2.10) unstable; urgency=low * fixed bug of concatenated mo sms + * Git: slp/pkgs/v/vmodem-daemon-emulator + * Tag: vmodemd-emul_0.2.10 - -- SungMin Ha Tue, 17 Apr 2012 18:57:28 +0900 + -- Sungmin Ha Wed, 18 Apr 2012 14:00:00 +0900 -vmodemd-emul (0.2.8) unstable; urgency=low +vmodemd-emul (0.2.9) unstable; urgency=low * modified boilerplate for protex - * call release bug fixed when 1waiting, 1active call + * call release bug fixed when 1waiting, 1active call + * Git: slp/pkgs/v/vmodem-daemon-emulator + * Tag: vmodemd-emul_0.2.9 - -- SungMin Ha Thu, 5 Apr 2012 19:57:28 +0900 + -- jihye kim Fri, 6 Apr 2012 17:00:00 +0900 -vmodemd-emul (0.2.7) unstable; urgency=low +vmodemd-emul (0.2.8) unstable; urgency=low * unlimited check sim bug is fixed. * add CRSM param get command for mo sms. * modified ss.db for support query of video call + * Git: slp/pkgs/v/vmodem-daemon-emulator + * Tag: vmodemd-emul_0.2.8 - -- SungMin Ha Fri, 30 Mar 2012 08:57:28 +0900 + -- jihye kim Wed, 4 Apr 2012 17:00:00 +0900 -vmodemd-emul (0.2.6) unstable; urgency=low +vmodemd-emul (0.2.7) unstable; urgency=low * modified initialize ss.db when booting time. + * Git: slp/pkgs/v/vmodem-daemon-emulator + * Tag: vmodemd-emul_0.2.7 - -- SungMin Ha Fri, 30 Mar 2012 08:57:28 +0900 + -- jihye kim Tue, 3 Apr 2012 17:00:00 +0900 -vmodemd-emul (0.2.5) unstable; urgency=low +vmodemd-emul (0.2.6) unstable; urgency=low * modified temporary patch for waiting call. + * Git: slp/pkgs/v/vmodem-daemon-emulator + * Tag: vmodemd-emul_0.2.6 + + -- Jihye kim Thr, 29 Mar 2012 15:30:52 +0900 + +vmodemd-emul (0.2.5) unstable; urgency=low + + * Update changelog version. + * Git: slp/pkgs/v/vmodem-daemon-emulator + * Tag: vmodemd-emul_0.2.5 - -- SungMin Ha Thu, 29 Mar 2012 17:39:28 +0900 + -- Kitae kim Thr, 27 Mar 2012 20:00:00 +0900 vmodemd-emul (0.2.4) unstable; urgency=low - * modified for support call and sms. + * Update changelog version. + * Git: slp/pkgs/v/vmodem-daemon-emulator + * Tag: vmodem-daemon-emulator_0.2.2 - -- SungMin Ha Tue, 27 Mar 2012 17:10:52 +0900 + -- Jihye kim Thr, 22 Mar 2012 20:00:00 +0900 vmodemd-emul (0.2.3) unstable; urgency=low * modified for support at command additional features. - -- SungMin Ha Thu, 22 Mar 2012 18:10:52 +0900 + -- SungMin Ha Thr, 22 Mar 2012 18:10:52 +0900 vmodemd-emul (0.2.2) unstable; urgency=low diff --git a/debian/control b/debian/control index 1db9094..5aa2f12 100644 --- a/debian/control +++ b/debian/control @@ -1,9 +1,9 @@ Source: vmodemd-emul Section: devel Priority: extra -Maintainer: DongKyun Yun , SungMin Ha +Maintainer: SungMin Ha ,Jihye Kim ,Yeongkyoon Lee Build-Depends: bison, flex, autoconf, gcc, debhelper, libglib2.0-dev, libxml2-dev, libvconf-dev -Standards-Version: 0.2.10 +Standards-Version: 0.2.17 Package: vmodemd-emul Architecture: i386 diff --git a/libvmodem/vgsm_phone.h b/libvmodem/vgsm_phone.h index c148cca..2471950 100644 --- a/libvmodem/vgsm_phone.h +++ b/libvmodem/vgsm_phone.h @@ -1340,7 +1340,7 @@ #define GSM_SMS_CB_CONFIG_RES 0x0A // by luxmea ] #define GSM_SMS_STORED_MSG_CNT_NOTI 0x0B // by luxmea - +#define GSM_SMS_RECEIVE_RES 0x0C /* -------------------------------------------------------------------------- diff --git a/packaging/vmodemd-emul.spec b/packaging/vmodemd-emul.spec index 28c21b1..aee7c0e 100644 --- a/packaging/vmodemd-emul.spec +++ b/packaging/vmodemd-emul.spec @@ -1,6 +1,6 @@ #git:slp/pkgs/v/vmodem-daemon-emulator Name: vmodemd-emul -Version: 0.2.10 +Version: 0.2.17 Release: 1 Summary: Modem Emulator Group: System/ModemEmulator diff --git a/vmodem/at/at_recv.c b/vmodem/at/at_recv.c index e93b4a8..02e78af 100644 --- a/vmodem/at/at_recv.c +++ b/vmodem/at/at_recv.c @@ -175,6 +175,11 @@ int at_recv_sms(char* cmd, char* atmsg) int at_recv_security(char* cmd, char* atmsg) { TRACE(MSGL_VGSM_INFO, "\n"); + char data[256]; + strcpy(data, atmsg); + char* tdata = strchr(atmsg, '='); + char token[] = "\""; + char* ret = NULL; if( !strcmp(cmd, "!+CRSM=") ) { @@ -194,7 +199,15 @@ int at_recv_security(char* cmd, char* atmsg) } else if( !strcmp(cmd, "!+CPIN=") ) { - return at_rx_sim_sec_change_password(atmsg); + ret = strtok(tdata+1, token); + ret = strtok(NULL, token); + ret = strtok(NULL, token); + if(ret) + { + return at_rx_sim_sec_change_password(data); + } + else + return at_rx_sim_sec_check_password(data); } // return at_rx_sim_sec_pin_status(atmsg); @@ -254,7 +267,7 @@ int at_recv_network(char* cmd, char* atmsg) int at_recv_ss(char* cmd, char* atmsg) { TRACE(MSGL_VGSM_INFO, "%s\n", atmsg); - char data[48]; + char data[256]; strcpy(data, atmsg); char* tdata = strchr(atmsg, '='); char* ret = NULL; diff --git a/vmodem/at/at_rx_security.c b/vmodem/at/at_rx_security.c index 88eb6a0..57f87d0 100644 --- a/vmodem/at/at_rx_security.c +++ b/vmodem/at/at_rx_security.c @@ -59,6 +59,12 @@ int at_rx_sim_sec_lock_info(char* atmsg) return oem_rx_sim_sec_get_lock_info_req(atmsg, strlen(atmsg)); } +int at_rx_sim_sec_check_password(char* atmsg) +{ + TRACE(MSGL_VGSM_SIM, "\n"); + + return oem_rx_sim_sec_check_password_req(atmsg, strlen(atmsg)); +} int at_rx_sim_sec_change_password(char* atmsg) { @@ -67,7 +73,6 @@ int at_rx_sim_sec_change_password(char* atmsg) return oem_rx_sim_sec_change_password_req(atmsg, strlen(atmsg)); } - static int at_rx_sim_sec_set_phone_lock_req(void* ptr_data, int data_len) { unsigned char *p = ptr_data; @@ -119,8 +124,8 @@ int at_rx_sim_sec_phone_lock_get(char* atmsg) ret = strtok(data+1, TOKEN); char token[] = "\""; - ret = strtok(NULL, token); - ret = strtok(NULL, token); + ret = strtok(NULL, TOKEN); + ret = strtok(NULL, TOKEN); TRACE(MSGL_VGSM_SIM, "input pw:%s, orig pw:%s\n", ret, origPwd); if(ret) { diff --git a/vmodem/at/at_tx_security.c b/vmodem/at/at_tx_security.c index c48dc1e..7cf0913 100644 --- a/vmodem/at/at_tx_security.c +++ b/vmodem/at/at_tx_security.c @@ -74,6 +74,12 @@ int at_tx_sim_sec_get_lock_info_res(void* ptr_data, int data_len) return -1; } +int at_tx_sim_sec_check_password_res(void* ptr_data) +{ + TRACE(MSGL_VGSM_SIM, "res\n"); + + return at_gen_resp_send((char*)ptr_data); +} int at_tx_sim_sec_change_password_res(void* ptr_data) { diff --git a/vmodem/at/at_tx_sms.c b/vmodem/at/at_tx_sms.c index 8ac5187..3b69318 100644 --- a/vmodem/at/at_tx_sms.c +++ b/vmodem/at/at_tx_sms.c @@ -32,6 +32,7 @@ #include "at_gen_resp.h" #include "at_tx_sms.h" #include "at_func.h" +#include "phoneserver.h" #include int at_tx_sms_deviceReady(void *data, int len) @@ -122,10 +123,25 @@ int at_tx_sms_stored_msg_count_resp(void) return at_gen_resp_send(AT_GEN_ERR_NO_ERROR); } +void sms_response_for_eventinjector() +{ + LXT_MESSAGE smsres_packet; + + // for sms receive check + TAPIMessageInit(&smsres_packet); + smsres_packet.group = GSM_SMS; // 0x04 + smsres_packet.action = GSM_SMS_RECEIVE_RES; // 0x0C + FuncServer->Cast(&GlobalPS, LXT_ID_CLIENT_EVENT_INJECTOR, &smsres_packet); +} + int at_tx_sms_deliver_report_noti(int result_status) { TRACE(MSGL_VGSM_INFO, "+CNMA noti\n"); - return at_gen_resp_send(AT_GEN_ERR_NO_ERROR); + int rc = 0; + + rc = at_gen_resp_send(AT_GEN_ERR_NO_ERROR); + sms_response_for_eventinjector(); + return rc; } int at_tx_sms_param_count_resp(unsigned char mem_store, unsigned char record_count) diff --git a/vmodem/include/at/at_rx_security.h b/vmodem/include/at/at_rx_security.h index d31052a..8621d83 100644 --- a/vmodem/include/at/at_rx_security.h +++ b/vmodem/include/at/at_rx_security.h @@ -37,6 +37,7 @@ int at_rx_sim_sec_pin_status(char* atmsg); int at_rx_sim_sec_lock_info(char* atmsg); int at_rx_sim_sec_change_password(char* atmsg); +int at_rx_sim_sec_check_password(char* atmsg); int at_rx_sim_sec_phone_lock(char* atmsg); int at_rx_sim_sec_phone_lock_get(char* atmsg); diff --git a/vmodem/include/at/at_tx_sms.h b/vmodem/include/at/at_tx_sms.h index 665a169..6f41911 100644 --- a/vmodem/include/at/at_tx_sms.h +++ b/vmodem/include/at/at_tx_sms.h @@ -31,6 +31,8 @@ #include "at_msg.h" #include "logmsg.h" +void sms_response_for_eventinjector(void); + int at_tx_sms_deviceReady(void *data, int len); int at_tx_sms_NotiIncomingMsg(void *data, int len); diff --git a/vmodem/oem/oem_rx_security.c b/vmodem/oem/oem_rx_security.c index 7a0bc5a..4c125f3 100644 --- a/vmodem/oem/oem_rx_security.c +++ b/vmodem/oem/oem_rx_security.c @@ -53,6 +53,12 @@ int oem_rx_sim_sec_get_lock_info_req(void* ptr_data, int data_len) return server_rx_sim_sec_get_lock_info_req(ptr_data, data_len); } +int oem_rx_sim_sec_check_password_req(void* ptr_data, int data_len) +{ + SIM_DEBUG("\n"); + return server_rx_sim_sec_check_password_req(ptr_data, data_len); +} + int oem_rx_sim_sec_change_password_req(void* ptr_data, int data_len) { SIM_DEBUG("\n"); diff --git a/vmodem/oem/oem_tx_security.c b/vmodem/oem/oem_tx_security.c index cc82c89..22e4cf4 100644 --- a/vmodem/oem/oem_tx_security.c +++ b/vmodem/oem/oem_tx_security.c @@ -56,6 +56,11 @@ int oem_tx_sim_sec_get_lock_info_res(void* ptr_data, int data_len) return at_tx_sim_sec_get_lock_info_res(ptr_data, data_len); } +int oem_tx_sim_sec_check_password_res(void* ptr_data) +{ + SIM_DEBUG("\n"); + return at_tx_sim_sec_check_password_res(ptr_data); +} int oem_tx_sim_sec_change_password_res(void* ptr_data) { diff --git a/vmodem/server/client.c b/vmodem/server/client.c index 423753d..3b1b452 100644 --- a/vmodem/server/client.c +++ b/vmodem/server/client.c @@ -45,6 +45,7 @@ #include "at_rx_func.h" #include "misc.h" #include "at_send.h" +#include "at_tx_sms.h" #include "state.h" //#include "db_phonebook.h" @@ -1443,6 +1444,7 @@ static int client_callback(PhoneServer * ps, int fd, EloopCondition cond, void * change_state_machine( GSM_CALL_CMD ); if( is_flight_mode() ){ TRACE(MSGL_VGSM_INFO, "Flight mode on \n"); + callback_callist(); /* not call */ }else{ TRACE(MSGL_VGSM_INFO, "Flight mode off \n"); @@ -1458,6 +1460,7 @@ static int client_callback(PhoneServer * ps, int fd, EloopCondition cond, void * case GSM_SMS: if( is_flight_mode() ){ TRACE(MSGL_VGSM_INFO, "Flight mode on \n"); + sms_response_for_eventinjector(); /* not sms */ }else{ TRACE(MSGL_VGSM_INFO, "Flight mode off \n"); @@ -1492,8 +1495,8 @@ static int client_callback(PhoneServer * ps, int fd, EloopCondition cond, void * do_internal(ps, ci, &packet); break; //090326 - case RESTORE_EI_DATA : - do_restore_ei(ps, ci, &packet); + case RESTORE_EI_DATA : + do_restore_ei(ps, ci, &packet); #if 0 diff --git a/vmodem/server/server_rx_security.c b/vmodem/server/server_rx_security.c index b48deb2..c4c57c7 100644 --- a/vmodem/server/server_rx_security.c +++ b/vmodem/server/server_rx_security.c @@ -535,6 +535,51 @@ int server_rx_sim_sec_get_lock_info_req(void* ptr_data, int data_len) return oem_tx_sim_sec_get_lock_info_res(pdata, sizeof pdata); } +int server_rx_sim_sec_check_password_req(void* ptr_data, int data_len) +{ + int result = -1; + int length_p; + int lock_type; + char *password=0; + int recv_type = 0; + char tmpmsg[SEND_BUF_SIZE]; + memset(tmpmsg, '\0', sizeof(tmpmsg)); + strcpy(tmpmsg, (char*)ptr_data); + char* tdata = strchr(tmpmsg, '='); + char token[] = "\""; + char* ret = NULL; + + ret = strtok(tdata+1, token); + if(ret) + { + length_p = strlen(ret); + password = malloc(length_p+1); + strcpy(password, ret); + strcat(password, "\0"); + } + + recv_type = GSM_SEC_LOCK_TYPE_SC; + lock_type = GSM_SIM_PIN2_REQ; + + result = server_sec_verify_password(password,lock_type,length_p); + /* fail case */ + if(result == SIM_FAIL) + { + // reduce retry count. + server_sec_status_mgr(lock_type); + oem_tx_sim_sec_check_password_res(AT_CME_ERR_INCORRECT_PWD); + } + /* success case */ + else if(result == SIM_SUCCESS) + { + oem_tx_sim_sec_check_password_res(AT_GEN_ERR_NO_ERROR); + } + + if(password) + free(password); + + return 1; +} int server_rx_sim_sec_change_password_req(void* ptr_data, int data_len) { diff --git a/vmodem/server/server_rx_sms.c b/vmodem/server/server_rx_sms.c index bfd8179..d421322 100644 --- a/vmodem/server/server_rx_sms.c +++ b/vmodem/server/server_rx_sms.c @@ -38,6 +38,8 @@ #include "at_recv.h" #include "at_gen_resp.h" #include "sms_util.h" +#include +#include extern SmsAddressInfo g_sca; extern int smsSentStatus; @@ -81,7 +83,7 @@ static int sms_msg_hook_modify(void * data, int len) int server_rx_sms_SendMsg(void *ptr_data, int data_len) { unsigned char rawdata[0x100]; - int rawdata_len = 0; + int rawdata_len = 0, rssi = 5; unsigned char data[data_len]; LXT_MESSAGE packet; @@ -99,8 +101,14 @@ int server_rx_sms_SendMsg(void *ptr_data, int data_len) packet.length = data_len; sms_msg_hook_modify(packet.data, packet.length); - - if(smsSentStatus == 0) + + // check RSSI level + if(vconf_get_int(VCONFKEY_TELEPHONY_RSSI, &rssi)) + { + TRACE(MSGL_WARN, "vconf_get_int(%s) fail\n", VCONFKEY_TELEPHONY_RSSI); + } + + if(smsSentStatus == 0 && rssi != 0) { FuncServer->Cast(&GlobalPS, LXT_ID_CLIENT_EVENT_INJECTOR, &packet); -- 2.7.4