Package: gnuradio
Version: 3.7.10.1-2
Severity: important
Tags: patch

Dear Maintainer,

When setting trigger mode to "tags", the QT Time Sink crashes.
This is reported upstream here:
  https://github.com/gnuradio/gnuradio/pull/1275


The fix is to check that the variable "d_start" is larger or equal to 0.

Best regards,
Ruben

From: Ruben Undheim <ruben.undh...@gmail.com>
Date: Fri Apr 14 10:03:58 CEST 2017
Subject: Prevents a segfault when using QT time sink
 with trigger mode "tag"
Bug-Upstream: https://github.com/gnuradio/gnuradio/pull/1275
Forwarded: yes
Index: gnuradio-3.7.10.1/gr-qtgui/lib/time_sink_c_impl.cc
===================================================================
--- gnuradio-3.7.10.1.orig/gr-qtgui/lib/time_sink_c_impl.cc
+++ gnuradio-3.7.10.1/gr-qtgui/lib/time_sink_c_impl.cc
@@ -567,12 +567,15 @@ namespace gr {
                         nr, nr + nitems + 1,
                         d_trigger_tag_key);
       if(tags.size() > 0) {
-        d_triggered = true;
         trigger_index = tags[0].offset - nr;
-        d_start = d_index + trigger_index - d_trigger_delay - 1;
-        d_end = d_start + d_size;
-        d_trigger_count = 0;
-        _adjust_tags(-d_start);
+        int start = d_index + trigger_index - d_trigger_delay - 1;
+        if (start >= 0) {
+            d_triggered = true;
+            d_start = start;
+            d_end = d_start + d_size;
+            d_trigger_count = 0;
+            _adjust_tags(-d_start);
+        }
       }
     }
 
Index: gnuradio-3.7.10.1/gr-qtgui/lib/time_sink_f_impl.cc
===================================================================
--- gnuradio-3.7.10.1.orig/gr-qtgui/lib/time_sink_f_impl.cc
+++ gnuradio-3.7.10.1/gr-qtgui/lib/time_sink_f_impl.cc
@@ -562,12 +562,15 @@ namespace gr {
                         nr, nr + nitems + 1,
                         d_trigger_tag_key);
       if(tags.size() > 0) {
-        d_triggered = true;
         trigger_index = tags[0].offset - nr;
-        d_start = d_index + trigger_index - d_trigger_delay - 1;
-        d_end = d_start + d_size;
-        d_trigger_count = 0;
-        _adjust_tags(-d_start);
+        int start = d_index + trigger_index - d_trigger_delay - 1;
+        if (start >= 0) {
+            d_triggered = true;
+            d_start = start;
+            d_end = d_start + d_size;
+            d_trigger_count = 0;
+            _adjust_tags(-d_start);
+        }
       }
     }
 

Attachment: signature.asc
Description: Digital signature

Reply via email to