[Title] remove memory leaks
authorSooyoung Ha <yoosah.ha@samsung.com>
Sun, 13 Jan 2013 09:28:00 +0000 (18:28 +0900)
committerSooyoung Ha <yoosah.ha@samsung.com>
Sun, 13 Jan 2013 09:28:00 +0000 (18:28 +0900)
[Desc.] modify vmodem/server/server_tx_ss.c file.

packaging/vmodemd-emul.spec
vmodem/server/server_tx_ss.c

index 069f895..18c4367 100644 (file)
@@ -1,6 +1,6 @@
 #git:slp/pkgs/v/vmodem-daemon-emulator
 Name: vmodemd-emul
-Version: 0.2.31
+Version: 0.2.32
 Release: 1
 Summary: Modem Emulator
 Group: System/ModemEmulator
index c103595..3ddd936 100644 (file)
@@ -52,6 +52,8 @@ void server_tx_ss_cw_set_req ( LXT_MESSAGE *packet)
        int *a;
 
        call_waiting_entry_t * entry = malloc(sizeof(call_waiting_entry_t));
+       if(!entry)
+               return;
        memset(entry, 0, sizeof(call_waiting_entry_t));
 
        TRACE(MSGL_VGSM_SS,"\n");
@@ -123,6 +125,9 @@ void server_tx_ss_cw_set_req ( LXT_MESSAGE *packet)
        vgsm_ss_database_add(SS_CMD_CW, entry);
 
        init_ss_info_re();                                              // restore data list in EI
+       
+       if(entry)
+               free(entry);
 }
 
 void server_tx_ss_cf_set_req ( LXT_MESSAGE *packet)
@@ -131,6 +136,8 @@ void server_tx_ss_cf_set_req ( LXT_MESSAGE *packet)
        int *a;
 
        call_forwarding_entry_t * entry = malloc(sizeof(call_forwarding_entry_t));
+       if(!entry)
+               return;
        memset(entry, 0, sizeof(call_forwarding_entry_t));
 
        TRACE(MSGL_VGSM_SS,"\n");
@@ -361,6 +368,9 @@ void server_tx_ss_cf_set_req ( LXT_MESSAGE *packet)
        vgsm_ss_database_add(SS_CMD_CF, entry);
 
        init_ss_info_re();                                              // restore data list in EI
+       
+       if(entry)
+               free(entry);
 }
 
 void server_tx_ss_cb_set_req ( LXT_MESSAGE *packet)
@@ -369,6 +379,8 @@ void server_tx_ss_cb_set_req ( LXT_MESSAGE *packet)
        int *a;
 
        call_barring_entry_t * entry = malloc(sizeof(call_barring_entry_t));
+       if(!entry)
+               return;
        memset(entry, 0, sizeof(call_barring_entry_t));
 
        TRACE(MSGL_VGSM_SS,"\n");
@@ -433,6 +445,9 @@ void server_tx_ss_cb_set_req ( LXT_MESSAGE *packet)
        vgsm_ss_database_add(SS_CMD_CB, entry);
 
        init_ss_info_re();                                              // restore data list in EI
+
+       if(entry)
+               free(entry);
 }
 
 
@@ -513,9 +528,7 @@ int server_tx_ss_state( ss_state_e_type type )
        get_call_list( &list );
        call_id = get_call_id();
        length = 8 + list.CallInfo[call_id].num_len;
-       data = malloc(sizeof(unsigned char)*length);
-       memset( data, 0, sizeof(unsigned char)*length );
-
+       
        if( list.CallCount <= 0 )
                return 0;
 
@@ -539,6 +552,11 @@ int server_tx_ss_state( ss_state_e_type type )
                return 0;
        }
 
+       data = malloc(sizeof(unsigned char)*length);
+       if(!data)
+               return -1;
+       memset( data, 0, sizeof(unsigned char)*length );
+
        switch( type ) {
            case SS_STATE_HOLD:
                data[0] = 0x61; // GSM_SS_INFO_CALL_ON_HOLD
@@ -576,6 +594,7 @@ int server_tx_ss_state( ss_state_e_type type )
                break;
 
            default:
+               free(data);
                return 0;
        }