Petri Hintukainen pushed to branch master at VideoLAN / libaacs
Commits:
5ceca4fd by npzacs at 2020-07-22T18:04:34+03:00
keydbcfg: Add missing error checks (invalid hexstring)
- - - - -
f2972575 by npzacs at 2020-07-22T18:04:52+03:00
Minor optimization to hex string printing
Ensure nul termination.
- - - - -
2d97db7c by npzacs at 2020-07-22T18:06:33+03:00
comfigure: drop tests for unused headers
- - - - -
6b4839c6 by npzacs at 2020-07-22T18:09:36+03:00
configure: drop check for snprintf
It is part of C99 / POSIX. And not used in libaacs ...
- - - - -
d9ac148a by hpi1 at 2020-07-22T18:11:18+03:00
Clean up CFLAGS after ddd90a20
- - - - -
5f2c9858 by hpi1 at 2020-07-22T18:12:19+03:00
Update ChangeLog
- - - - -
5 changed files:
- ChangeLog
- Makefile.am
- configure.ac
- src/file/keydbcfg.c
- src/util/strutl.c
Changes:
=====================================
ChangeLog
=====================================
@@ -1,3 +1,15 @@
+2020-07-??: Version 0.11.0
+- Add more AACS2 support (still not complete).
+- Add support for partial unit keys in KEYDB.CFG.
+- Improve opening of UHD discs (~ 10 seconds faster).
+- Improve large KEYDB.CFG parsing (~ 4 times faster).
+- Improve error resilience.
+- Reduce memory usage (does not depend on config file size anymore).
+- Fix segfault on macOS when MMC opening fails.
+- Fix memory leak with multiple UK entries in KEYDB.cfg file.
+- Fix AACS2 with multiple unit keys.
+- Fix include flags order (do not include wrong headers outside of source
tree).
+
2020-03-22: Version 0.10.0
- Add support for AACS2 content certificate.
- Add aacs_set_key_caching().
=====================================
Makefile.am
=====================================
@@ -102,7 +102,7 @@ parser_test_SOURCES = \
src/file/keydbcfg-lexer.l \
src/util/strutl.c \
src/util/logging.c
-parser_test_CFLAGS = -std=c99 $(SET_FEATURES) $(SET_INCLUDES)
+parser_test_CFLAGS = -std=c99
uk_dump_SOURCES = \
src/devtools/uk_dump.c \
@@ -110,7 +110,7 @@ uk_dump_SOURCES = \
src/libaacs/unit_key.h \
src/libaacs/unit_key.c \
src/util/logging.c
-uk_dump_CFLAGS = -std=c99 $(SET_FEATURES) $(SET_INCLUDES)
+uk_dump_CFLAGS = -std=c99
mkb_dump_SOURCES = \
src/devtools/mkb_dump.c \
@@ -119,8 +119,8 @@ mkb_dump_SOURCES = \
src/libaacs/mkb.c \
src/util/strutl.c \
src/util/logging.c
-mkb_dump_CFLAGS = -std=c99 $(SET_FEATURES) $(SET_INCLUDES)
+mkb_dump_CFLAGS = -std=c99
aacs_info_SOURCES = src/examples/aacs_info.c
-aacs_info_CFLAGS = -std=c99 $(SET_FEATURES) $(SET_INCLUDES)
+aacs_info_CFLAGS = -std=c99
aacs_info_LDADD = libaacs.la
=====================================
configure.ac
=====================================
@@ -62,10 +62,6 @@ esac
AM_CONDITIONAL(HAVE_WIN32, test "${SYS}" = "mingw32")
AM_CONDITIONAL(HAVE_DARWIN, test "${SYS}" = "darwin")
-dnl messages
-library_not_found="Could not find required library!"
-function_not_found="Could not find required function!"
-
dnl configure options
AC_ARG_ENABLE([werror],
[AS_HELP_STRING([--enable-werror], [set warnings as errors via -Werror
@<:@default=disabled@:>@])])
@@ -93,20 +89,14 @@ dnl required types
AC_TYPE_SIGNAL
dnl required headers
-AC_CHECK_HEADERS([stdarg.h sys/types.h dirent.h errno.h libgen.h malloc.h])
+AC_CHECK_HEADERS([stdarg.h sys/types.h errno.h libgen.h malloc.h])
AC_CHECK_HEADERS([stdlib.h mntent.h linux/cdrom.h inttypes.h])
-AC_CHECK_HEADERS([sys/time.h time.h sys/select.h limits.h sys/param.h])
+AC_CHECK_HEADERS([sys/select.h limits.h sys/param.h])
AC_CHECK_HEADERS([sys/mount.h])
-dnl required structures
-AC_STRUCT_DIRENT_D_TYPE
-
dnl required system services
AC_SYS_LARGEFILE
-dnl required functions
-AC_CHECK_FUNC([snprintf],, [AC_MSG_ERROR($function_not_found)])
-
dnl required libraries
dnl gcrypt check
=====================================
src/file/keydbcfg.c
=====================================
@@ -168,9 +168,10 @@ static int _parse_pk_file(config_file *cf, AACS_FILE_H *fp)
pk_list *e = calloc(1, sizeof(pk_list));
if (e) {
- hexstring_to_hex_array(e->key, 16, str);
-
- if (_is_duplicate_pk(cf->pkl, e->key)) {
+ if (!hexstring_to_hex_array(e->key, 16, str)) {
+ BD_DEBUG(DBG_FILE, "Skipping invalid processing key
%s\n", str);
+ X_FREE(e);
+ } else if (_is_duplicate_pk(cf->pkl, e->key)) {
BD_DEBUG(DBG_FILE, "Skipping duplicate processing key
%s\n", str);
X_FREE(e);
} else {
@@ -229,10 +230,11 @@ static int _parse_cert_file(config_file *cf, AACS_FILE_H
*fp)
cert_list *e = calloc(1, sizeof(cert_list));
if (e) {
- hexstring_to_hex_array(e->host_priv_key, 20, host_priv_key);
- hexstring_to_hex_array(e->host_cert, 92, host_cert);
-
- if (_is_duplicate_cert(cf->host_cert_list, e)) {
+ if (!hexstring_to_hex_array(e->host_priv_key, 20,
host_priv_key) ||
+ !hexstring_to_hex_array(e->host_cert, 92, host_cert)) {
+ BD_DEBUG(DBG_FILE, "Skipping invalid certificate entry %s
%s\n", host_priv_key, host_cert);
+ X_FREE(e);
+ } else if (_is_duplicate_cert(cf->host_cert_list, e)) {
BD_DEBUG(DBG_FILE, "Skipping duplicate certificate entry
%s %s\n", host_priv_key, host_cert);
X_FREE(e);
} else {
=====================================
src/util/strutl.c
=====================================
@@ -249,10 +249,13 @@ char *str_get_hex_string(const char *p, int n)
char *str_print_hex(char *out, const uint8_t *buf, int count)
{
+ static const char nibble[16] = "0123456789abcdef";
int zz;
for (zz = 0; zz < count; zz++) {
- sprintf(out + (zz * 2), "%02x", buf[zz]);
+ out[zz*2 ] = nibble[buf[zz] >> 4];
+ out[zz*2 + 1] = nibble[buf[zz] & 0x0f];
}
+ out[zz*2] = 0;
return out;
}
View it on GitLab:
https://code.videolan.org/videolan/libaacs/-/compare/58fb6beb63f0097f04f9a3a48d84b691bece2df4...5f2c9858b3756a91606164ed72d83ca26b5e0383
--
View it on GitLab:
https://code.videolan.org/videolan/libaacs/-/compare/58fb6beb63f0097f04f9a3a48d84b691bece2df4...5f2c9858b3756a91606164ed72d83ca26b5e0383
You're receiving this email because of your account on code.videolan.org.
_______________________________________________
libaacs-devel mailing list
[email protected]
https://mailman.videolan.org/listinfo/libaacs-devel