From 246817fe546490df8e6f5e4e85cc93e01927bda4 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 5 May 2010 15:49:33 -0700 Subject: [PATCH] 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. --- src/mm-plugin-base.c | 4 ++-- 1 file 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));