[mythtv-commits] Ticket #12339: 708decoder crashes on specific data:

MythTV noreply at mythtv.org
Fri Dec 26 17:41:03 UTC 2014


#12339: 708decoder crashes on specific data:
--------------------------------------+-------------------------
     Reporter:  eugene.smirnov@…      |      Owner:
         Type:  Bug Report - General  |     Status:  new
     Priority:  major                 |  Milestone:  unknown
    Component:  MythTV - General      |    Version:  Master Head
     Severity:  medium                |   Keywords:
Ticket locked:  0                     |
--------------------------------------+-------------------------
 Hi guys, i recently found a problem in EIA708 decoder implementation,
 causing my programm to crash, please take a look at source code.

 cc708decoder.cpp line 503
 static int handle_cc_c2(CC708Reader* cc, uint service_num, int i)
 {
     const int blk_size = cc->buf_size[service_num];
     const int code = cc->buf[service_num][i+1];

 so it accessing buffer at position i+1, while that function used as
 follows:

 cc708decoder.cpp line 330
  // C2 code -- nothing in EIA-708-A
 i = handle_cc_c2(cc, service_num, i+1);

 For example handle_cc_c3 works fine, there is no extra i+1 in callee
 function

 This looks like off by one issue, in my environment array was out of
 bound, cinse i've used stl vector instead of c++ arrays, probably dueto
 way of allocation buffer there never a crash in original code, but rather
 some inconsistence.

 I'm attaching 708 data file that consist of 3*X bytes of CEA708 data. You
 can use it to check issue, if to feed decoder with type byte right shifted
 by 3

--
Ticket URL: <https://code.mythtv.org/trac/ticket/12339>
MythTV <http://www.mythtv.org>
MythTV Media Center


More information about the mythtv-commits mailing list