Bug#862295: unblock: v4l-utils/1.12.5-1
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
Please unblock package v4l-utils
Hello,
please unblock the latest stable version of v4l-utils 1.12. It fixes
a crash in the Digital Video Broadcasting (DVB) library that occurs
when a German DVB-T2 transport stream is parsed. Additionally it fixes
a bug where identical transport streams were not detected as such.
Thanks,
Gregor
diff -Nru v4l-utils-1.12.3/ChangeLog v4l-utils-1.12.5/ChangeLog
--- v4l-utils-1.12.3/ChangeLog 2017-02-17 20:07:58.000000000 +0100
+++ v4l-utils-1.12.5/ChangeLog 2017-05-10 20:23:45.000000000 +0200
@@ -1,3 +1,27 @@
+v4l-utils-1.12.5
+----------------
+
+Mauro Carvalho Chehab (1):
+ dvb-scan: fix the logic for multi-section handling
+
+
+v4l-utils-1.12.4
+----------------
+
+Clemens Ladisch (1):
+ libdvbv5: T2 delivery descriptor: fix wrong size of bandwidth field
+
+Mauro Carvalho Chehab (5):
+ desc_t2_delivery: consider valid to have a short T2 descriptor
+ desc_t2_delivery: properly handle cell and subcell tables
+ desc_t2_delivery: improve print dumps of T2 delivery
+ desc_t2_delivery: resize frequency array for subcel freqs
+ libdvbv5: add support for more PMT descriptors
+
+Reinhard Speyerer (1):
+ libdvbv5: fix T2 delivery descriptor parsing in dvb_desc_t2_delivery_init()
+
+
v4l-utils-1.12.3
----------------
diff -Nru v4l-utils-1.12.3/configure v4l-utils-1.12.5/configure
--- v4l-utils-1.12.3/configure.ac 2017-02-17 20:05:46.000000000 +0100
+++ v4l-utils-1.12.5/configure.ac 2017-05-10 20:24:05.000000000 +0200
@@ -3,7 +3,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
-AC_INIT([v4l-utils],[1.12.3])
+AC_INIT([v4l-utils],[1.12.5])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])
diff -Nru v4l-utils-1.12.3/contrib/cobalt-ctl/Makefile v4l-utils-1.12.5/contrib/cobalt-ctl/Makefile
diff -Nru v4l-utils-1.12.3/debian/changelog v4l-utils-1.12.5/debian/changelog
--- v4l-utils-1.12.3/debian/changelog 2017-02-17 20:14:26.000000000 +0100
+++ v4l-utils-1.12.5/debian/changelog 2017-05-10 20:29:42.000000000 +0200
@@ -1,3 +1,22 @@
+v4l-utils (1.12.5-1) unstable; urgency=medium
+
+ * Imported Upstream version 1.12.5 (Closes: #859008)
+
+ -- Gregor Jasny <gjasny@googlemail.com> Wed, 10 May 2017 20:29:42 +0200
+
+v4l-utils (1.12.4-1) unstable; urgency=medium
+
+ * Imported Upstream version 1.12.4 (Closes: #859008)
+ * Remove patches applied upstream
+
+ -- Gregor Jasny <gjasny@googlemail.com> Sat, 06 May 2017 19:29:03 +0200
+
+v4l-utils (1.12.3-2) unstable; urgency=medium
+
+ * Fix DVB descriptor parsing (Closes: #859008)
+
+ -- Gregor Jasny <gjasny@googlemail.com> Tue, 02 May 2017 22:12:52 +0200
+
v4l-utils (1.12.3-1) unstable; urgency=medium
* Imported Upstream version 1.12.3 (Closes: #854100)
diff -Nru v4l-utils-1.12.3/debian/control v4l-utils-1.12.5/debian/control
--- v4l-utils-1.12.3/debian/control 2017-01-22 21:28:14.000000000 +0100
+++ v4l-utils-1.12.5/debian/control 2017-05-06 19:27:07.000000000 +0200
@@ -21,7 +21,7 @@
Standards-Version: 3.9.8
Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/libv4l.git
Vcs-Git: https://anonscm.debian.org/git/collab-maint/libv4l.git
-Homepage: http://linuxtv.org/downloads/v4l-utils/
+Homepage: https://linuxtv.org/downloads/v4l-utils/
Package: libv4l-0
Section: libs
diff -Nru v4l-utils-1.12.3/debian/libdvbv5-0.symbols v4l-utils-1.12.5/debian/libdvbv5-0.symbols
--- v4l-utils-1.12.3/debian/libdvbv5-0.symbols 2017-01-22 19:33:15.000000000 +0100
+++ v4l-utils-1.12.5/debian/libdvbv5-0.symbols 2017-05-06 19:43:11.000000000 +0200
@@ -271,6 +271,7 @@
isdbt_interval@Base 1.4.0
isdbt_mode@Base 1.4.0
pmt_stream_name@Base 1.4.0
+ siso_miso@Base 1.12.4
stack_dump@Base 1.12.1
sys_atsc_props@Base 1.4.0
sys_atscmh_props@Base 1.4.0
diff -Nru v4l-utils-1.12.3/debian/watch v4l-utils-1.12.5/debian/watch
--- v4l-utils-1.12.3/debian/watch 2016-06-15 21:34:30.000000000 +0200
+++ v4l-utils-1.12.5/debian/watch 2017-05-06 19:26:55.000000000 +0200
@@ -1,3 +1,3 @@
version=4
-opts=pgpsigurlmangle=s/$/.asc/ http://linuxtv.org/downloads/@PACKAGE@/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate
+opts=pgpsigurlmangle=s/$/.asc/ https://linuxtv.org/downloads/@PACKAGE@/ @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate
diff -Nru v4l-utils-1.12.3/lib/include/libdvbv5/desc_t2_delivery.h v4l-utils-1.12.5/lib/include/libdvbv5/desc_t2_delivery.h
--- v4l-utils-1.12.3/lib/include/libdvbv5/desc_t2_delivery.h 2017-01-22 18:33:34.000000000 +0100
+++ v4l-utils-1.12.5/lib/include/libdvbv5/desc_t2_delivery.h 2017-05-10 20:21:39.000000000 +0200
@@ -45,10 +45,14 @@
*
* @param cell_id_extension cell id extension
* @param transposer_frequency transposer frequency
+ *
+ * NOTE: This struct is deprecated and will never be filled. All
+ * subcell transposer frequencies will be added to
+ * dvb_desc_t2_delivery::centre_frequency array.
*/
struct dvb_desc_t2_delivery_subcell {
uint8_t cell_id_extension;
- uint16_t transposer_frequency;
+ uint16_t transposer_frequency; // Should be 32 bits, instead
} __attribute__((packed));
/**
@@ -65,7 +69,8 @@
* @param other_frequency_flag other frequency flag
* @param tfs_flag tfs flag
*
- * @param centre_frequency centre frequency vector
+ * @param centre_frequency centre frequency vector, for all cell and
+ * subcel ID's
* @param frequency_loop_length size of the dvb_desc_t2_delivery::centre_frequency
* vector
*
@@ -86,13 +91,15 @@
uint16_t transmission_mode:3;
uint16_t guard_interval:3;
uint16_t reserved:2;
- uint16_t bandwidth:3;
+ uint16_t bandwidth:4;
uint16_t SISO_MISO:2;
} __attribute__((packed));
} __attribute__((packed));
uint32_t *centre_frequency;
uint8_t frequency_loop_length;
+
+ /* Unused, as the definitions here are incomplete */
uint8_t subcel_info_loop_length;
struct dvb_desc_t2_delivery_subcell *subcell;
} __attribute__((packed));
@@ -161,6 +168,12 @@
*/
extern const unsigned dvbt2_transmission_mode[];
+/**
+ * @brief converts from internal representation to string the SISO_MISO
+ * field of dvb_desc_t2_delivery:SISO_MISO field.
+ */
+const char *siso_miso[4];
+
#ifdef __cplusplus
}
#endif
diff -Nru v4l-utils-1.12.3/lib/include/libdvbv5/libdvb-version.h v4l-utils-1.12.5/lib/include/libdvbv5/libdvb-version.h
--- v4l-utils-1.12.3/lib/include/libdvbv5/libdvb-version.h 2017-02-17 20:09:16.000000000 +0100
+++ v4l-utils-1.12.5/lib/include/libdvbv5/libdvb-version.h 2017-05-10 20:26:11.000000000 +0200
@@ -1,4 +1,4 @@
#define LIBDVBV5_VERSION_MAJOR 1
#define LIBDVBV5_VERSION_MINOR 12
-#define LIBDVBV5_VERSION_PATCH 3
-#define LIBDVBV5_VERSION "1.12.3"
+#define LIBDVBV5_VERSION_PATCH 5
+#define LIBDVBV5_VERSION "1.12.5"
diff -Nru v4l-utils-1.12.3/lib/include/libdvbv5/pmt.h v4l-utils-1.12.5/lib/include/libdvbv5/pmt.h
--- v4l-utils-1.12.3/lib/include/libdvbv5/pmt.h 2017-01-22 18:33:34.000000000 +0100
+++ v4l-utils-1.12.5/lib/include/libdvbv5/pmt.h 2017-05-06 18:51:00.000000000 +0200
@@ -104,7 +104,6 @@
* @brief User Private (from 0x80 to 0xff)
*/
enum dvb_streams {
- stream_reserved0 = 0x00,
stream_video = 0x01,
stream_video_h262 = 0x02,
stream_audio = 0x03,
@@ -125,8 +124,20 @@
stream_14496_1_pes = 0x12,
stream_14496_1_iso = 0x13,
stream_download = 0x14,
- stream_reserved = 0x15,
- stream_private = 0x80
+ stream_video_h264 = 0x1b,
+ stream_audio_14496_3 = 0x1c,
+ stream_video_hevc = 0x24,
+ stream_video_cavs = 0x42,
+ stream_video_moto = 0x80,
+ stream_audio_a52 = 0x81,
+ stream_scte_27 = 0x82,
+ stream_audio_sdds = 0x84,
+ stream_audio_dts_hdmv = 0x85,
+ stream_audio_e_ac3 = 0x87,
+ stream_audio_dts = 0x8a,
+ stream_audio_a52_vls = 0x91,
+ stream_spu_vls = 0x92,
+ stream_audio_sdds2 = 0x94,
};
/**
diff -Nru v4l-utils-1.12.3/lib/libdvbv5/descriptors/desc_t2_delivery.c v4l-utils-1.12.5/lib/libdvbv5/descriptors/desc_t2_delivery.c
--- v4l-utils-1.12.3/lib/libdvbv5/descriptors/desc_t2_delivery.c 2017-01-22 18:33:34.000000000 +0100
+++ v4l-utils-1.12.5/lib/libdvbv5/descriptors/desc_t2_delivery.c 2017-05-10 20:21:39.000000000 +0200
@@ -30,7 +30,7 @@
struct dvb_desc_t2_delivery *d = desc;
unsigned char *p = (unsigned char *) buf;
size_t desc_len = ext->length - 1, len, len2;
- int i;
+ int i, n, pos = 0, subcel_length;
len = offsetof(struct dvb_desc_t2_delivery, bitfield);
len2 = offsetof(struct dvb_desc_t2_delivery, centre_frequency);
@@ -40,53 +40,76 @@
return -1;
}
if (desc_len < len2) {
- memcpy(p, buf, len);
+ memcpy(d, buf, len);
bswap16(d->system_id);
- if (desc_len != len)
- dvb_logwarn("T2 delivery descriptor is truncated");
+ /* It is valid to have length == 4 */
+ if (desc_len == len)
+ return 0;
+ dvb_logwarn("T2 delivery descriptor is truncated");
return -2;
}
- memcpy(p, buf, len2);
+ memcpy(d, buf, len2);
+ bswap16(d->system_id);
+ bswap16(d->bitfield);
p += len2;
- len = desc_len - (p - buf);
- memcpy(&d->centre_frequency, p, len);
- p += len;
-
- if (d->tfs_flag)
- d->frequency_loop_length = 1;
- else {
- d->frequency_loop_length = *p;
- p++;
- }
+ while (desc_len - (p - buf)) {
+ if (desc_len - (p - buf) < sizeof(uint16_t)) {
+ dvb_logwarn("T2 delivery descriptor is truncated");
+ return -2;
+ }
- d->centre_frequency = calloc(d->frequency_loop_length,
- sizeof(*d->centre_frequency));
- if (!d->centre_frequency) {
- dvb_logerr("%s: out of memory", __func__);
- return -3;
- }
- memcpy(d->centre_frequency, p, sizeof(*d->centre_frequency) * d->frequency_loop_length);
- p += sizeof(*d->centre_frequency) * d->frequency_loop_length;
+ /* Discard cell ID */
+ p += sizeof(uint16_t);
- for (i = 0; i < d->frequency_loop_length; i++)
- bswap32(d->centre_frequency[i]);
+ if (d->tfs_flag) {
+ n = *p;
+ p++;
+ }
+ else
+ n = 1;
+
+ d->frequency_loop_length += n;
+ d->centre_frequency = realloc(d->centre_frequency,
+ d->frequency_loop_length * sizeof(*d->centre_frequency));
+ if (!d->centre_frequency) {
+ dvb_logerr("%s: out of memory", __func__);
+ return -3;
+ }
+
+ memcpy(&d->centre_frequency[pos], p, sizeof(*d->centre_frequency) * n);
+ p += sizeof(*d->centre_frequency) * n;
+
+ for (i = 0; i < n; i++) {
+ bswap32(d->centre_frequency[pos]);
+ pos++;
+ }
- d->subcel_info_loop_length = *p;
- p++;
+ /* Handle subcel frequency table */
+ subcel_length = *p;
+ p++;
+ for (i = 0; i < subcel_length; i++) {
+ if (desc_len - (p - buf) < sizeof(uint8_t) + sizeof(uint32_t)) {
+ dvb_logwarn("T2 delivery descriptor is truncated");
+ return -2;
+ }
+ p++; // Ignore subcell ID
+
+ // Add transposer_frequency at centre_frequency table
+ d->frequency_loop_length++;
+ d->centre_frequency = realloc(d->centre_frequency,
+ d->frequency_loop_length * sizeof(*d->centre_frequency));
+ memcpy(&d->centre_frequency[pos], p, sizeof(*d->centre_frequency));
+ bswap32(d->centre_frequency[pos]);
+ pos++;
- d->subcell = calloc(d->subcel_info_loop_length, sizeof(*d->subcell));
- if (!d->subcell) {
- dvb_logerr("%s: out of memory", __func__);
- return -4;
+ p += sizeof(*d->centre_frequency);
+ }
}
- memcpy(d->subcell, p, sizeof(*d->subcell) * d->subcel_info_loop_length);
- for (i = 0; i < d->subcel_info_loop_length; i++)
- bswap16(d->subcell[i].transposer_frequency);
return 0;
}
@@ -105,19 +128,16 @@
dvb_loginfo("| tfs_flag %d", d->tfs_flag);
dvb_loginfo("| other_frequency_flag %d", d->other_frequency_flag);
- dvb_loginfo("| transmission_mode %d", d->transmission_mode);
- dvb_loginfo("| guard_interval %d", d->guard_interval);
+ dvb_loginfo("| transmission_mode %s (%d)",
+ fe_transmission_mode_name[dvbt2_transmission_mode[d->transmission_mode]], d->transmission_mode);
+ dvb_loginfo("| guard_interval %s (%d)",
+ fe_guard_interval_name[dvbt2_interval[d->guard_interval]], d->guard_interval );
dvb_loginfo("| reserved %d", d->reserved);
- dvb_loginfo("| bandwidth %d", d->bandwidth);
- dvb_loginfo("| SISO MISO %d", d->SISO_MISO);
+ dvb_loginfo("| bandwidth %d", dvbt2_bw[d->bandwidth]);
+ dvb_loginfo("| SISO MISO %s", siso_miso[d->SISO_MISO]);
for (i = 0; i < d->frequency_loop_length; i++)
dvb_loginfo("| centre frequency[%d] %d", i, d->centre_frequency[i]);
-
- for (i = 0; i < d->subcel_info_loop_length; i++) {
- dvb_loginfo("| cell_id_extension[%d] %d", i, d->subcell[i].cell_id_extension);
- dvb_loginfo("| transposer frequency %d", d->subcell[i].transposer_frequency);
- }
}
void dvb_desc_t2_delivery_free(const void *desc)
@@ -159,3 +179,8 @@
[5] = TRANSMISSION_MODE_32K,
[6 ...7] = TRANSMISSION_MODE_AUTO, /* Reserved */
};
+const char *siso_miso[4] = {
+ [0] = "SISO",
+ [1] = "MISO",
+ [2 ...3] = "reserved",
+};
diff -Nru v4l-utils-1.12.3/lib/libdvbv5/dvb-file.c v4l-utils-1.12.5/lib/libdvbv5/dvb-file.c
--- v4l-utils-1.12.3/lib/libdvbv5/dvb-file.c 2017-01-22 18:33:34.000000000 +0100
+++ v4l-utils-1.12.5/lib/libdvbv5/dvb-file.c 2017-05-06 18:51:00.000000000 +0200
@@ -1024,6 +1024,9 @@
case 0x01: /* ISO/IEC 11172-2 Video */
case 0x02: /* H.262, ISO/IEC 13818-2 or ISO/IEC 11172-2 video */
case 0x1b: /* H.264 AVC */
+ case 0x24: /* HEVC */
+ case 0x42: /* CAVS */
+ case 0x80: /* MPEG-2 MOTO video */
entry->video_pid = realloc(entry->video_pid,
sizeof(*entry->video_pid) *
(video_len + 1));
@@ -1032,9 +1035,17 @@
break;
case 0x03: /* ISO/IEC 11172-3 Audio */
case 0x04: /* ISO/IEC 13818-3 Audio */
+ case 0x07: /* DTS and DTS-HD Audio */
case 0x0f: /* ISO/IEC 13818-7 Audio with ADTS (AAC) */
case 0x11: /* ISO/IEC 14496-3 Audio with the LATM */
- case 0x81: /* user private - in general ATSC Dolby - AC-3 */
+ case 0x1c: /* ISO/IEC 14496-3 Audio, without additional transport syntax */
+ case 0x81: /* A52 */
+ case 0x84: /* SDDS */
+ case 0x85: /* DTS on HDMV */
+ case 0x87: /* E-AC3 */
+ case 0x8a: /* DTS */
+ case 0x91: /* A52 VLS */
+ case 0x94: /* SDDS */
entry->audio_pid = realloc(entry->audio_pid,
sizeof(*entry->audio_pid) *
(audio_len + 1));
diff -Nru v4l-utils-1.12.3/lib/libdvbv5/dvb-scan.c v4l-utils-1.12.5/lib/libdvbv5/dvb-scan.c
--- v4l-utils-1.12.3/lib/libdvbv5/dvb-scan.c 2017-01-22 18:33:34.000000000 +0100
+++ v4l-utils-1.12.5/lib/libdvbv5/dvb-scan.c 2017-05-10 20:21:53.000000000 +0200
@@ -239,12 +239,6 @@
return -1;
}
ext += i;
-
- memset(ext, 0, sizeof(*ext));
- ext->ext_id = h.id;
- ext->first_section = h.section_id;
- ext->last_section = h.last_section;
- new = 1;
}
}
diff -Nru v4l-utils-1.12.3/lib/libdvbv5/tables/pmt.c v4l-utils-1.12.5/lib/libdvbv5/tables/pmt.c
--- v4l-utils-1.12.3/lib/libdvbv5/tables/pmt.c 2017-01-22 18:33:34.000000000 +0100
+++ v4l-utils-1.12.5/lib/libdvbv5/tables/pmt.c 2017-05-06 18:51:00.000000000 +0200
@@ -172,7 +172,9 @@
}
const char *pmt_stream_name[] = {
- [stream_reserved0] = "Reserved",
+ [0x00 ... 0x7f] = "Reserved",
+ [0x80 ... 0xff] = "User Private",
+
[stream_video] = "Video ISO/IEC 11172",
[stream_video_h262] = "Video ISO/IEC 13818-2",
[stream_audio] = "Audio ISO/IEC 11172",
@@ -193,7 +195,20 @@
[stream_14496_1_pes] = "ISO/IEC 14496-1 PES",
[stream_14496_1_iso] = "ISO/IEC 14496-1 ISO",
[stream_download] = "ISO/IEC 13818-6 Synchronized Download Protocol",
- [stream_reserved ... 0x7f] = "ISO/IEC 13818-1 Reserved",
- [stream_private ... 0xff] = "User Private"
+
+ [stream_video_h264] = "H264",
+ [stream_audio_14496_3] = "ISO/IEC 14496-3 Audio",
+ [stream_video_hevc] = "HEVC",
+ [stream_video_cavs] = "CAVS (Chinese AVS)",
+ [stream_video_moto] = "MPEG-2 MOTO video",
+ [stream_audio_a52] = "A52",
+ [stream_scte_27] = "SCTE-27 (sub)",
+ [stream_audio_sdds] = "SDDS",
+ [stream_audio_dts_hdmv] = "DTS",
+ [stream_audio_e_ac3] = "E-AC3, ATSC",
+ [stream_audio_dts] = "DTS",
+ [stream_audio_a52_vls] = "A52 vls",
+ [stream_spu_vls] = "DVD_SPU vls",
+ [stream_audio_sdds2] = "SDDS",
};
unblock v4l-utils/1.12.5-1
-- System Information:
Debian Release: 9.0
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 4.9.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Reply to: