diff --git a/src/sim.c b/src/sim.c index 129ff5dd..ca6c4d8e 100644 --- a/src/sim.c +++ b/src/sim.c @@ -36,6 +36,8 @@ #include #include +#include + #include "ofono.h" #include "common.h" @@ -349,8 +351,8 @@ static char **get_service_numbers(GSList *service_numbers) static void service_number_free(gpointer pointer) { struct service_number *num = pointer; - g_free(num->id); - g_free(num); + l_free(num->id); + l_free(num); } static void call_state_watches(struct ofono_sim *sim) @@ -1285,27 +1287,26 @@ static void sim_sdn_read_cb(int ok, int length, int record, if (sim_adn_parse(data, record_length, &ph, &alpha) == FALSE) goto out; - /* Use phone number if Id is unavailable */ if (alpha && alpha[0] == '\0') { - g_free(alpha); + l_free(alpha); alpha = NULL; } if (alpha == NULL) - alpha = g_strdup(phone_number_to_string(&ph)); + alpha = l_strdup(phone_number_to_string(&ph)); if (sim->service_numbers && g_slist_find_custom(sim->service_numbers, alpha, service_number_compare)) { ofono_error("Duplicate EFsdn entries for `%s'", alpha); - g_free(alpha); + l_free(alpha); goto out; } - sdn = g_new(struct service_number, 1); + sdn = l_new(struct service_number, 1); sdn->id = alpha; memcpy(&sdn->ph, &ph, sizeof(struct ofono_phone_number)); @@ -2512,10 +2513,10 @@ static void sim_spn_close(struct ofono_sim *sim) sim->reading_spn = false; - g_free(sim->spn); + l_free(sim->spn); sim->spn = NULL; - g_free(sim->spn_dc); + l_free(sim->spn_dc); sim->spn_dc = NULL; } @@ -2829,10 +2830,10 @@ static void sim_spn_set(struct ofono_sim *sim, const void *data, int length, DBusConnection *conn = ofono_dbus_get_connection(); const char *path = __ofono_atom_get_path(sim->atom); - g_free(sim->spn); + l_free(sim->spn); sim->spn = NULL; - g_free(sim->spn_dc); + l_free(sim->spn_dc); sim->spn_dc = NULL; if (data == NULL) @@ -2861,13 +2862,13 @@ static void sim_spn_set(struct ofono_sim *sim, const void *data, int length, } if (strlen(sim->spn) == 0) { - g_free(sim->spn); + l_free(sim->spn); sim->spn = NULL; goto notify; } if (dc) - sim->spn_dc = g_memdup(dc, 1); + sim->spn_dc = l_memdup(dc, 1); notify: if (sim->spn) diff --git a/src/simutil.c b/src/simutil.c index 527e3ccd..22dfaeb6 100644 --- a/src/simutil.c +++ b/src/simutil.c @@ -816,9 +816,7 @@ static char *sim_network_name_parse(const unsigned char *buffer, int length, if (buffer[i] == 0xff && buffer[i + 1] == 0xff) break; - ret = g_convert((const char *) buffer, length, - "UTF-8//TRANSLIT", "UCS-2BE", - NULL, NULL, NULL); + ret = l_utf8_from_ucs2be(buffer, length); break; } @@ -990,9 +988,9 @@ static void pnn_operator_free(struct sim_eons_operator_info *oper) if (oper == NULL) return; - g_free(oper->info); - g_free(oper->shortname); - g_free(oper->longname); + l_free(oper->info); + l_free(oper->shortname); + l_free(oper->longname); } struct sim_eons *sim_eons_new(int pnn_records) @@ -1552,7 +1550,7 @@ gboolean sim_cphs_is_active(unsigned char *cphs, enum sim_cphs_service index) void sim_app_record_free(struct sim_app_record *app) { - g_free(app->label); + l_free(app->label); g_free(app); } @@ -1607,7 +1605,7 @@ error: GSList *t = ret; struct sim_app_record *app = ret->data; - g_free(app->label); + l_free(app->label); g_free(app); ret = ret->next; diff --git a/src/smsutil.c b/src/smsutil.c index 23472e84..8c084d42 100644 --- a/src/smsutil.c +++ b/src/smsutil.c @@ -677,10 +677,9 @@ gboolean sms_decode_address_field(const unsigned char *pdu, int len, return FALSE; utf8 = convert_gsm_to_utf8(res, written, NULL, NULL, 0); - l_free(res); - if (utf8 == NULL) + if (!utf8) return FALSE; /* @@ -688,13 +687,12 @@ gboolean sms_decode_address_field(const unsigned char *pdu, int len, * 22 bytes+terminator in UTF-8. */ if (strlen(utf8) > 22) { - g_free(utf8); + l_free(utf8); return FALSE; } strcpy(out->address, utf8); - - g_free(utf8); + l_free(utf8); } return TRUE; @@ -2294,7 +2292,7 @@ char *sms_decode_text(GSList *sms_list) single_shift); if (converted) { g_string_append(str, converted); - g_free(converted); + l_free(converted); } } else { const guint8 *from = ud + taken; @@ -4107,7 +4105,7 @@ char *cbs_decode_text(GSList *cbs_list, char *iso639_lang) } } - buf = g_new(unsigned char, bufsize); + buf = l_new(unsigned char, bufsize); bufsize = 0; for (l = cbs_list; l; l = l->next) { @@ -4203,10 +4201,9 @@ char *cbs_decode_text(GSList *cbs_list, char *iso639_lang) if (charset == SMS_CHARSET_7BIT) utf8 = convert_gsm_to_utf8(buf, bufsize, NULL, NULL, 0); else - utf8 = g_convert((char *) buf, bufsize, "UTF-8//TRANSLIT", - "UCS-2BE", NULL, NULL, NULL); + utf8 = l_utf8_from_ucs2be(buf, bufsize); - g_free(buf); + l_free(buf); return utf8; } diff --git a/src/stkutil.c b/src/stkutil.c index 9aeccc5f..20a60d44 100644 --- a/src/stkutil.c +++ b/src/stkutil.c @@ -110,9 +110,7 @@ static char *decode_text(unsigned char dcs, int len, const unsigned char *data) utf8 = convert_gsm_to_utf8(data, len, NULL, NULL, 0); break; case SMS_CHARSET_UCS2: - utf8 = g_convert((const gchar *) data, len, - "UTF-8//TRANSLIT", "UCS-2BE", - NULL, NULL, NULL); + utf8 = l_utf8_from_ucs2be(data, len); break; default: utf8 = NULL; @@ -574,7 +572,7 @@ static gboolean parse_dataobj_text(struct comprehension_tlv_iter *iter, char *utf8; if (len <= 1) { - *text = g_try_malloc0(1); + *text = l_new(char, 1); return TRUE; } @@ -2256,8 +2254,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type) static void destroy_stk_item(gpointer pointer) { struct stk_item *item = pointer; - g_free(item->text); - g_free(item); + l_free(item->text); + l_free(item); } static gboolean parse_item_list(struct comprehension_tlv_iter *iter, @@ -2283,7 +2281,7 @@ static gboolean parse_item_list(struct comprehension_tlv_iter *iter, } list = g_slist_prepend(list, - g_memdup(&item, sizeof(item))); + l_memdup(&item, sizeof(item))); } } while (comprehension_tlv_iter_next(iter) == TRUE && comprehension_tlv_iter_get_tag(iter) == tag); @@ -2300,7 +2298,6 @@ static gboolean parse_item_list(struct comprehension_tlv_iter *iter, g_slist_free_full(list, destroy_stk_item); return FALSE; - } static gboolean parse_provisioning_list(struct comprehension_tlv_iter *iter, @@ -2432,7 +2429,7 @@ static enum stk_command_parse_result parse_dataobj( static void destroy_display_text(struct stk_command *command) { - g_free(command->display_text.text); + l_free(command->display_text.text); } static enum stk_command_parse_result parse_display_text( @@ -2472,7 +2469,7 @@ static enum stk_command_parse_result parse_display_text( static void destroy_get_inkey(struct stk_command *command) { - g_free(command->get_inkey.text); + l_free(command->get_inkey.text); } static enum stk_command_parse_result parse_get_inkey( @@ -2510,8 +2507,8 @@ static enum stk_command_parse_result parse_get_inkey( static void destroy_get_input(struct stk_command *command) { - g_free(command->get_input.text); - g_free(command->get_input.default_text); + l_free(command->get_input.text); + l_free(command->get_input.default_text); } static enum stk_command_parse_result parse_get_input( @@ -2565,7 +2562,7 @@ static enum stk_command_parse_result parse_more_time( static void destroy_play_tone(struct stk_command *command) { - g_free(command->play_tone.alpha_id); + l_free(command->play_tone.alpha_id); } static enum stk_command_parse_result parse_play_tone( @@ -2622,7 +2619,7 @@ static enum stk_command_parse_result parse_poll_interval( static void destroy_setup_menu(struct stk_command *command) { - g_free(command->setup_menu.alpha_id); + l_free(command->setup_menu.alpha_id); g_slist_free_full(command->setup_menu.items, destroy_stk_item); } @@ -2667,7 +2664,7 @@ static enum stk_command_parse_result parse_setup_menu( static void destroy_select_item(struct stk_command *command) { - g_free(command->select_item.alpha_id); + l_free(command->select_item.alpha_id); g_slist_free_full(command->select_item.items, destroy_stk_item); } @@ -2718,7 +2715,7 @@ static enum stk_command_parse_result parse_select_item( static void destroy_send_sms(struct stk_command *command) { - g_free(command->send_sms.alpha_id); + l_free(command->send_sms.alpha_id); g_free(command->send_sms.cdma_sms.array); } @@ -2823,8 +2820,8 @@ out: static void destroy_send_ss(struct stk_command *command) { - g_free(command->send_ss.alpha_id); g_free(command->send_ss.ss.ss); + l_free(command->send_ss.alpha_id); } static enum stk_command_parse_result parse_send_ss(struct stk_command *command, @@ -2856,7 +2853,7 @@ static enum stk_command_parse_result parse_send_ss(struct stk_command *command, static void destroy_send_ussd(struct stk_command *command) { - g_free(command->send_ussd.alpha_id); + l_free(command->send_ussd.alpha_id); } static enum stk_command_parse_result parse_send_ussd( @@ -2889,9 +2886,9 @@ static enum stk_command_parse_result parse_send_ussd( static void destroy_setup_call(struct stk_command *command) { - g_free(command->setup_call.alpha_id_usr_cfm); g_free(command->setup_call.addr.number); - g_free(command->setup_call.alpha_id_call_setup); + l_free(command->setup_call.alpha_id_usr_cfm); + l_free(command->setup_call.alpha_id_call_setup); } static enum stk_command_parse_result parse_setup_call( @@ -2944,7 +2941,7 @@ static enum stk_command_parse_result parse_setup_call( static void destroy_refresh(struct stk_command *command) { g_slist_free_full(command->refresh.file_list, g_free); - g_free(command->refresh.alpha_id); + l_free(command->refresh.alpha_id); } static enum stk_command_parse_result parse_refresh( @@ -3123,7 +3120,7 @@ static enum stk_command_parse_result parse_timer_mgmt( static void destroy_setup_idle_mode_text(struct stk_command *command) { - g_free(command->setup_idle_mode_text.text); + l_free(command->setup_idle_mode_text.text); } static enum stk_command_parse_result parse_setup_idle_mode_text( @@ -3160,8 +3157,8 @@ static enum stk_command_parse_result parse_setup_idle_mode_text( static void destroy_run_at_command(struct stk_command *command) { - g_free(command->run_at_command.alpha_id); g_free(command->run_at_command.at_command); + l_free(command->run_at_command.alpha_id); } static enum stk_command_parse_result parse_run_at_command( @@ -3199,8 +3196,8 @@ static enum stk_command_parse_result parse_run_at_command( static void destroy_send_dtmf(struct stk_command *command) { - g_free(command->send_dtmf.alpha_id); g_free(command->send_dtmf.dtmf); + l_free(command->send_dtmf.alpha_id); } static enum stk_command_parse_result parse_send_dtmf( @@ -3259,11 +3256,11 @@ static void destroy_launch_browser(struct stk_command *command) g_free(command->launch_browser.url); g_free(command->launch_browser.bearer.array); g_slist_free_full(command->launch_browser.prov_file_refs, g_free); - g_free(command->launch_browser.text_gateway_proxy_id); - g_free(command->launch_browser.alpha_id); g_free(command->launch_browser.network_name.array); - g_free(command->launch_browser.text_usr); - g_free(command->launch_browser.text_passwd); + l_free(command->launch_browser.text_gateway_proxy_id); + l_free(command->launch_browser.alpha_id); + l_free(command->launch_browser.text_usr); + l_free(command->launch_browser.text_passwd); } static enum stk_command_parse_result parse_launch_browser( @@ -3315,10 +3312,10 @@ static enum stk_command_parse_result parse_launch_browser( static void destroy_open_channel(struct stk_command *command) { - g_free(command->open_channel.alpha_id); g_free(command->open_channel.apn); - g_free(command->open_channel.text_usr); - g_free(command->open_channel.text_passwd); + l_free(command->open_channel.alpha_id); + l_free(command->open_channel.text_usr); + l_free(command->open_channel.text_passwd); } static enum stk_command_parse_result parse_open_channel( @@ -3379,7 +3376,7 @@ static enum stk_command_parse_result parse_open_channel( static void destroy_close_channel(struct stk_command *command) { - g_free(command->close_channel.alpha_id); + l_free(command->close_channel.alpha_id); } static enum stk_command_parse_result parse_close_channel( @@ -3415,7 +3412,7 @@ static enum stk_command_parse_result parse_close_channel( static void destroy_receive_data(struct stk_command *command) { - g_free(command->receive_data.alpha_id); + l_free(command->receive_data.alpha_id); } static enum stk_command_parse_result parse_receive_data( @@ -3454,8 +3451,8 @@ static enum stk_command_parse_result parse_receive_data( static void destroy_send_data(struct stk_command *command) { - g_free(command->send_data.alpha_id); g_free(command->send_data.data.array); + l_free(command->send_data.alpha_id); } static enum stk_command_parse_result parse_send_data( @@ -3510,9 +3507,9 @@ static enum stk_command_parse_result parse_get_channel_status( static void destroy_service_search(struct stk_command *command) { - g_free(command->service_search.alpha_id); g_free(command->service_search.serv_search.ser_search); g_free(command->service_search.dev_filter.dev_filter); + l_free(command->service_search.alpha_id); } static enum stk_command_parse_result parse_service_search( @@ -3547,8 +3544,8 @@ static enum stk_command_parse_result parse_service_search( static void destroy_get_service_info(struct stk_command *command) { - g_free(command->get_service_info.alpha_id); g_free(command->get_service_info.attr_info.attr_info); + l_free(command->get_service_info.alpha_id); } static enum stk_command_parse_result parse_get_service_info( @@ -3643,7 +3640,7 @@ static enum stk_command_parse_result parse_get_frames_status( static void destroy_retrieve_mms(struct stk_command *command) { - g_free(command->retrieve_mms.alpha_id); + l_free(command->retrieve_mms.alpha_id); g_slist_free_full(command->retrieve_mms.mms_rec_files, g_free); } @@ -3690,7 +3687,7 @@ static enum stk_command_parse_result parse_retrieve_mms( static void destroy_submit_mms(struct stk_command *command) { - g_free(command->submit_mms.alpha_id); + l_free(command->submit_mms.alpha_id); g_slist_free_full(command->submit_mms.mms_subm_files, g_free); } diff --git a/src/util.c b/src/util.c index 9710f0b8..c85c0be3 100644 --- a/src/util.c +++ b/src/util.c @@ -2965,10 +2965,7 @@ char *convert_gsm_to_utf8_with_lang(const unsigned char *text, long len, res_length += UTF8_LENGTH(c); } - res = g_try_malloc(res_length + 1); - if (res == NULL) - goto error; - + res = l_malloc(res_length + 1); out = res; i = 0; @@ -2983,7 +2980,7 @@ char *convert_gsm_to_utf8_with_lang(const unsigned char *text, long len, } else c = gsm_locking_shift_lookup(&t, text[i]); - out += g_unichar_to_utf8(c, out); + out += l_utf8_from_wchar(c, out); ++i; } @@ -3567,9 +3564,7 @@ char *sim_string_to_utf8(const unsigned char *buffer, int length) if (buffer[i] == 0xff && buffer[i + 1] == 0xff) break; - return g_convert((char *) buffer + 1, i - 1, - "UTF-8//TRANSLIT", "UCS-2BE", - NULL, NULL, NULL); + return l_utf8_from_ucs2be(buffer + 1, i - 1); case 0x81: if (length < 3 || (buffer[1] > (length - 3))) return NULL; @@ -3643,10 +3638,7 @@ char *sim_string_to_utf8(const unsigned char *buffer, int length) if (buffer[i] != 0xff) return NULL; - utf8 = g_try_malloc(res_len + 1); - if (utf8 == NULL) - return NULL; - + utf8 = l_malloc(res_len + 1); i = offset; out = utf8; @@ -3661,7 +3653,7 @@ char *sim_string_to_utf8(const unsigned char *buffer, int length) } else c = gsm_locking_shift_lookup(&t, buffer[i++]); - out += g_unichar_to_utf8(c, out); + out += l_utf8_from_wchar(c, out); } *out = '\0';