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.
This commit is contained in:
@@ -880,7 +880,7 @@ static const guint8 zerobuf[32] = {
|
|||||||
static void
|
static void
|
||||||
serial_buffer_full (MMSerialPort *serial,
|
serial_buffer_full (MMSerialPort *serial,
|
||||||
GByteArray *buffer,
|
GByteArray *buffer,
|
||||||
PortProbeRunTask *task)
|
MMPortProbe *self)
|
||||||
{
|
{
|
||||||
const gchar **iter;
|
const gchar **iter;
|
||||||
size_t iter_len;
|
size_t iter_len;
|
||||||
@@ -892,7 +892,11 @@ serial_buffer_full (MMSerialPort *serial,
|
|||||||
if ( (buffer->len >= sizeof (zerobuf))
|
if ( (buffer->len >= sizeof (zerobuf))
|
||||||
&& (memcmp (buffer->data, zerobuf, sizeof (zerobuf)) == 0)) {
|
&& (memcmp (buffer->data, zerobuf, sizeof (zerobuf)) == 0)) {
|
||||||
mm_serial_port_close (serial);
|
mm_serial_port_close (serial);
|
||||||
port_probe_run_task_complete (task, FALSE, NULL);
|
port_probe_run_task_complete (self->priv->task,
|
||||||
|
FALSE,
|
||||||
|
g_error_new_literal (MM_CORE_ERROR,
|
||||||
|
MM_CORE_ERROR_FAILED,
|
||||||
|
"Probing stopped due to non-AT response"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -913,7 +917,11 @@ serial_buffer_full (MMSerialPort *serial,
|
|||||||
if (!memcmp (&buffer->data[i], *iter, iter_len)) {
|
if (!memcmp (&buffer->data[i], *iter, iter_len)) {
|
||||||
/* Immediately close the port and complete probing */
|
/* Immediately close the port and complete probing */
|
||||||
mm_serial_port_close (serial);
|
mm_serial_port_close (serial);
|
||||||
port_probe_run_task_complete (task, FALSE, NULL);
|
port_probe_run_task_complete (self->priv->task,
|
||||||
|
FALSE,
|
||||||
|
g_error_new_literal (MM_CORE_ERROR,
|
||||||
|
MM_CORE_ERROR_FAILED,
|
||||||
|
"Probing stopped due to non-AT response"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user