aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-09-11 16:19:38 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-09-11 16:40:21 +0200
commitea87a4556e4f4d09d0c4eaa6d85a7efc85431328 (patch)
treeb5416b5ecff55c12b61b2acdb6b19719cf92ce6b
parent36c7136510d40313c2dcbcb847d9092d0f56148a (diff)
sms: fix full data setting with `g_variant_new_from_data()'
The `g_variant_new_from_data()' method uses the original array during its operation, so we need to make sure it is valid as long as the method needs it, or we'll end up with Valgrind complaining a bit: ==4834== Invalid read of size 1 ==4834== at 0x36ADC75DA5: g_variant_get_byte (in /usr/lib64/libglib-2.0.so.0.3200.4) ==4834== by 0x3161ABED8C: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x3161ABEEA2: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x3161ABE844: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x3161ABE91E: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x3161ABEEA2: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x3161AC232E: g_dbus_message_to_blob (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x3161AB750A: ??? (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x3161AB9FEF: g_dbus_connection_send_message (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x3161ABDB22: g_dbus_connection_emit_signal (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x4C5B8BD: _mm_gdbus_sms_emit_changed (mm-gdbus-sms.c:2291) ==4834== by 0x36ADC47694: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.3200.4) ==4834== Address 0x939efa0 is 0 bytes inside a block of size 512 free'd ==4834== at 0x4A079AE: free (vg_replace_malloc.c:427) ==4834== by 0x36ADC4D37E: g_free (in /usr/lib64/libglib-2.0.so.0.3200.4) ==4834== by 0x36ADC1CF40: ??? (in /usr/lib64/libglib-2.0.so.0.3200.4) ==4834== by 0x43C88E: assemble_sms (mm-sms.c:1260) ==4834== by 0x43CAD6: mm_sms_multipart_take_part (mm-sms.c:1329) ==4834== by 0x43E2EF: take_multipart (mm-sms-list.c:268) ==4834== by 0x43E546: mm_sms_list_take_part (mm-sms-list.c:328) ==4834== by 0x454C8F: mm_iface_modem_messaging_take_part (mm-iface-modem-messaging.c:353) ==4834== by 0x461DF6: sms_pdu_part_list_ready (mm-broadband-modem.c:5007) ==4834== by 0x3161A6CFB6: g_simple_async_result_complete (in /usr/lib64/libgio-2.0.so.0.3200.4) ==4834== by 0x432F82: at_command_parse_response (mm-base-modem-at.c:490) ==4834== by 0x489F96: handle_response (mm-at-serial-port.c:161)
-rw-r--r--src/mm-sms.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/mm-sms.c b/src/mm-sms.c
index 5f7a300d..f29529b3 100644
--- a/src/mm-sms.c
+++ b/src/mm-sms.c
@@ -1046,8 +1046,8 @@ assemble_sms (MMSms *self,
fulldata->data,
fulldata->len * sizeof (guint8),
TRUE,
- NULL,
- NULL),
+ (GDestroyNotify) g_byte_array_unref,
+ g_byte_array_ref (fulldata)),
"smsc", mm_sms_part_get_smsc (sorted_parts[0]),
"class", mm_sms_part_get_class (sorted_parts[0]),
"number", mm_sms_part_get_number (sorted_parts[0]),
@@ -1056,7 +1056,7 @@ assemble_sms (MMSms *self,
NULL);
g_string_free (fulltext, TRUE);
- g_byte_array_free (fulldata, TRUE);
+ g_byte_array_unref (fulldata);
g_free (sorted_parts);
self->priv->is_assembled = TRUE;