summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2012-11-26 16:49:39 -0600
committerDan Williams <dcbw@redhat.com>2012-11-27 09:56:25 -0600
commita7167b93b9f077e063024754ad2d566fc65f76b4 (patch)
treeec6b74e47086c1bf2141d1bd568603096dadbba6
parent6106d1d6a2b05a031c54c75861363b199136e417 (diff)
port-probe: fix crash in buffer-full processing
Signal was attached with user_data as MMPortProbe*, but serial_buffer_full() treated user_data as a PortProbeRunTask*. Hillarity ensued.
-rw-r--r--src/mm-port-probe.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/mm-port-probe.c b/src/mm-port-probe.c
index 37c2baf1..598ceb6e 100644
--- a/src/mm-port-probe.c
+++ b/src/mm-port-probe.c
@@ -880,7 +880,7 @@ static const guint8 zerobuf[32] = {
880static void 880static void
881serial_buffer_full (MMSerialPort *serial, 881serial_buffer_full (MMSerialPort *serial,
882 GByteArray *buffer, 882 GByteArray *buffer,
883 PortProbeRunTask *task) 883 MMPortProbe *self)
884{ 884{
885 const gchar **iter; 885 const gchar **iter;
886 size_t iter_len; 886 size_t iter_len;
@@ -892,7 +892,11 @@ serial_buffer_full (MMSerialPort *serial,
892 if ( (buffer->len >= sizeof (zerobuf)) 892 if ( (buffer->len >= sizeof (zerobuf))
893 && (memcmp (buffer->data, zerobuf, sizeof (zerobuf)) == 0)) { 893 && (memcmp (buffer->data, zerobuf, sizeof (zerobuf)) == 0)) {
894 mm_serial_port_close (serial); 894 mm_serial_port_close (serial);
895 port_probe_run_task_complete (task, FALSE, NULL); 895 port_probe_run_task_complete (self->priv->task,
896 FALSE,
897 g_error_new_literal (MM_CORE_ERROR,
898 MM_CORE_ERROR_FAILED,
899 "Probing stopped due to non-AT response"));
896 return; 900 return;
897 } 901 }
898 902
@@ -913,7 +917,11 @@ serial_buffer_full (MMSerialPort *serial,
913 if (!memcmp (&buffer->data[i], *iter, iter_len)) { 917 if (!memcmp (&buffer->data[i], *iter, iter_len)) {
914 /* Immediately close the port and complete probing */ 918 /* Immediately close the port and complete probing */
915 mm_serial_port_close (serial); 919 mm_serial_port_close (serial);
916 port_probe_run_task_complete (task, FALSE, NULL); 920 port_probe_run_task_complete (self->priv->task,
921 FALSE,
922 g_error_new_literal (MM_CORE_ERROR,
923 MM_CORE_ERROR_FAILED,
924 "Probing stopped due to non-AT response"));
917 return; 925 return;
918 } 926 }
919 } 927 }