diff options
author | Dan Williams <dcbw@redhat.com> | 2010-05-05 15:49:33 -0700 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2010-05-05 15:49:33 -0700 |
commit | 246817fe546490df8e6f5e4e85cc93e01927bda4 (patch) | |
tree | ea52f4b960c6d2b4d59858a1f72ffaa82cc43a6c /src | |
parent | 9a6aa0c10d8354a646daf49db4ec2b99383839aa (diff) |
serial: fix possible segfault handing port-full signals
The argument passed to the handler is a GByteArray, not a
GString. Encountered with Option iCON Icera-based devices,
but could also be possible with Sierra devices.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-plugin-base.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/mm-plugin-base.c b/src/mm-plugin-base.c index 3e9a754e..af91ad88 100644 --- a/src/mm-plugin-base.c +++ b/src/mm-plugin-base.c @@ -378,7 +378,7 @@ static const char *dq_strings[] = { }; static void -port_buffer_full (MMSerialPort *port, GString *buffer, gpointer user_data) +port_buffer_full (MMSerialPort *port, GByteArray *buffer, gpointer user_data) { MMPluginBaseSupportsTask *task = MM_PLUGIN_BASE_SUPPORTS_TASK (user_data); MMPluginBaseSupportsTaskPrivate *priv = MM_PLUGIN_BASE_SUPPORTS_TASK_GET_PRIVATE (user_data); @@ -400,7 +400,7 @@ port_buffer_full (MMSerialPort *port, GString *buffer, gpointer user_data) */ iter_len = strlen (*iter); for (i = 0; i < buffer->len - iter_len; i++) { - if (!memcmp (&buffer->str[i], *iter, iter_len)) { + if (!memcmp (&buffer->data[i], *iter, iter_len)) { /* Immediately close the port and complete probing */ priv->probed_caps = 0; mm_serial_port_close (MM_SERIAL_PORT (priv->probe_port)); |