libaacs: update to libaacs-9da2b68

Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
Stephan Raue 2016-01-19 00:45:43 +01:00
parent 2f3834825f
commit b387195ec9
4 changed files with 2 additions and 210 deletions

View File

@ -17,12 +17,13 @@
################################################################################
PKG_NAME="libaacs"
PKG_VERSION="0.8.1"
PKG_VERSION="9da2b68"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.videolan.org/developers/libaacs.html"
PKG_URL="ftp://ftp.videolan.org/pub/videolan/libaacs/$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain libgcrypt"
PKG_PRIORITY="optional"
PKG_SECTION="multimedia"

View File

@ -1,52 +0,0 @@
From 1c0ba6b53759ea57a6146b4ce4d902cfe5c44d3c Mon Sep 17 00:00:00 2001
From: Roland Fischer <nalor@gmx.net>
Date: Wed, 9 Dec 2015 21:50:43 +0100
Subject: [PATCH] Correct debug-log in _find_config_entry
'discid' sent to BD_DEBUG has not been converted to string before
and resulted in a broken output - corrected.
---
src/libaacs/aacs.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/libaacs/aacs.c b/src/libaacs/aacs.c
index ae85612..60e678f 100644
--- a/src/libaacs/aacs.c
+++ b/src/libaacs/aacs.c
@@ -710,6 +710,7 @@ static void _find_config_entry(AACS *aacs, title_entry_list *ce,
uint8_t *mk, uint8_t *vuk)
{
char str[48];
+ char str2[48];
aacs->uks = NULL;
aacs->num_uks = 0;
@@ -731,7 +732,7 @@ static void _find_config_entry(AACS *aacs, title_entry_list *ce,
hexstring_to_hex_array(mk, 16, ce->entry.mek);
BD_DEBUG(DBG_AACS, "Found media key for %s: %s\n",
- ce->entry.discid, str_print_hex(str, mk, 16));
+ str_print_hex(str2, ce->entry.discid, 20), str_print_hex(str, mk, 16));
}
if (ce->entry.vid) {
@@ -739,14 +740,14 @@ static void _find_config_entry(AACS *aacs, title_entry_list *ce,
ce->entry.vid);
BD_DEBUG(DBG_AACS, "Found volume id for %s: %s\n",
- ce->entry.discid, str_print_hex(str, aacs->vid, 16));
+ str_print_hex(str2, ce->entry.discid, 20), str_print_hex(str, aacs->vid, 16));
}
if (ce->entry.vuk) {
hexstring_to_hex_array(vuk, 16, ce->entry.vuk);
BD_DEBUG(DBG_AACS, "Found volume unique key for %s: %s\n",
- ce->entry.discid, str_print_hex(str, vuk, 16));
+ str_print_hex(str2, ce->entry.discid, 20), str_print_hex(str, vuk, 16));
}
if (ce->entry.uk) {
--
1.7.10.4

View File

@ -1,43 +0,0 @@
From 7ee3b64639358a35188339f4547f70f7d5c2c9c2 Mon Sep 17 00:00:00 2001
From: Roland Fischer <nalor@gmx.net>
Date: Wed, 9 Dec 2015 21:51:57 +0100
Subject: [PATCH] Always write logentry in case of corrupted disc
In case of a AACS_ERROR_CORRUPTED_DISC error always write a BD_DEBUG
message at DBG_CRIT loglevel.
---
src/libaacs/aacs.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/libaacs/aacs.c b/src/libaacs/aacs.c
index 60e678f..1bd8ad5 100644
--- a/src/libaacs/aacs.c
+++ b/src/libaacs/aacs.c
@@ -286,6 +286,7 @@ static int _calc_pk_mk(MKB *mkb, dk_list *dkl, uint8_t *mk)
num_uvs = len / 5;
if (num_uvs < 1) {
+ BD_DEBUG(DBG_AACS | DBG_CRIT, "No UVS detected - corrupted disc\n");
return AACS_ERROR_CORRUPTED_DISC;
}
@@ -518,6 +519,7 @@ static int _calc_mk(AACS *aacs, uint8_t *mk, pk_list *pkl, dk_list *dkl)
return AACS_ERROR_NO_PK;
}
+ BD_DEBUG(DBG_AACS | DBG_CRIT, "Error calculating media key - corrupted disc\n");
return AACS_ERROR_CORRUPTED_DISC;
}
@@ -829,7 +831,7 @@ static int _calc_uks(AACS *aacs, config_file *cf)
file_seek(fp, f_pos, SEEK_SET);
if ((file_read(fp, buf, 16)) != 16) {
- BD_DEBUG(DBG_AACS, "Unit key %d: read error\n", i);
+ BD_DEBUG(DBG_AACS | DBG_CRIT, "Unit key %d: read error\n", i);
aacs->num_uks = i;
error_code = AACS_ERROR_CORRUPTED_DISC;
break;
--
1.7.10.4

View File

@ -1,114 +0,0 @@
From 972679a52f6a38f08c0bd0ea5c8a0d4750d6a8e8 Mon Sep 17 00:00:00 2001
From: Roland Fischer <nalor@gmx.net>
Date: Thu, 10 Dec 2015 20:47:02 +0100
Subject: [PATCH] mkb: Fix endless loop in _record
In case of a corrupt file it could happen that len get 0 in _record
and this results in an endless loop.
Created an exit condition for this case and fixed related
procedures too (they need to cope with the error-return-value
from _record).
Reason for change: https://github.com/OpenELEC/OpenELEC.tv/pull/4378
---
src/libaacs/mkb.c | 46 +++++++++++++++++++++++++++++++++++++++-------
1 file changed, 39 insertions(+), 7 deletions(-)
diff --git a/src/libaacs/mkb.c b/src/libaacs/mkb.c
index 275b269..4985c4d 100644
--- a/src/libaacs/mkb.c
+++ b/src/libaacs/mkb.c
@@ -52,6 +52,12 @@ static const uint8_t *_record(MKB *mkb, uint8_t type, size_t *rec_len)
return mkb->buf + pos;
}
+ if (len == 0) {
+ BD_DEBUG(DBG_MKB, "Couldn't retrieve MKB record 0x%02x - len=0 (%p)\n", type,
+ (void*)(mkb->buf + pos));
+ break;
+ }
+
pos += len;
}
@@ -108,6 +114,10 @@ uint8_t mkb_type(MKB *mkb)
{
const uint8_t *rec = _record(mkb, 0x10, NULL);
+ if (!rec) {
+ return 0;
+ }
+
return MKINT_BE32(rec + 4);
}
@@ -115,6 +125,10 @@ uint32_t mkb_version(MKB *mkb)
{
const uint8_t *rec = _record(mkb, 0x10, NULL);
+ if (!rec) {
+ return 0;
+ }
+
return MKINT_BE32(rec + 8);
}
@@ -152,31 +166,49 @@ const uint8_t *mkb_drive_revokation_entries(MKB *mkb, size_t *len)
const uint8_t *mkb_subdiff_records(MKB *mkb, size_t *len)
{
- const uint8_t *rec = _record(mkb, 0x04, len) + 4;
- *len -= 4;
+ const uint8_t *rec = _record(mkb, 0x04, len);
+
+ if (rec) {
+ rec += 4;
+ *len -= 4;
+ }
return rec;
}
const uint8_t *mkb_cvalues(MKB *mkb, size_t *len)
{
- const uint8_t *rec = _record(mkb, 0x05, len) + 4;
- *len -= 4;
+ const uint8_t *rec = _record(mkb, 0x05, len);
+
+ if (rec) {
+ rec += 4;
+ *len -= 4;
+ }
return rec;
}
const uint8_t *mkb_mk_dv(MKB *mkb)
{
- return _record(mkb, 0x81, NULL) + 4;
+ const uint8_t *rec = _record(mkb, 0x81, NULL);
+
+ if (rec) {
+ rec += 4;
+ }
+
+ return rec;
}
const uint8_t *mkb_signature(MKB *mkb, size_t *len)
{
const uint8_t *rec = _record(mkb, 0x02, len);
- *len -= 4;
- return rec + 4;
+ if (rec) {
+ rec += 4;
+ *len -= 4;
+ }
+
+ return rec;
}
--
1.7.10.4