Petri Hintukainen pushed to branch master at VideoLAN / libaacs
Commits:
eb8676e6 by npzacs at 2020-02-28T21:55:54+02:00
aacs_get_bdj_root_cert_hash(): do not return AACS2 content certificate hash
Application expects to get AACS1 SHA1 hash, not AACS2 SHA256 hash.
- - - - -
5795c79c by npzacs at 2020-02-28T21:55:54+02:00
Fix parsing multiple KEYDB.cfg files
Title entries from previous file were lost (and memory leaked)
- - - - -
1aefe1c8 by npzacs at 2020-02-28T21:55:54+02:00
Add aacs_error_str()
- - - - -
5 changed files:
- ChangeLog
- src/examples/aacs_info.c
- src/file/keydbcfg-parser.y
- src/libaacs/aacs.c
- src/libaacs/aacs.h
Changes:
=====================================
ChangeLog
=====================================
@@ -1,6 +1,9 @@
- Add support for AACS2 content certificate.
- Add aacs_set_key_caching().
+- Add aacs_error_str().
- Issue a warning when using AACS2 capable drive.
+- Fix parsing title entries from multiple KEYDB.cfg files.
+- Fix memory leak with multiple KEYDB.cfg files.
- Fix data corruption when structs are not packed.
2017-05-04: Version 0.9.0
=====================================
src/examples/aacs_info.c
=====================================
@@ -41,29 +41,6 @@ static const char *_hex2str(const uint8_t *s, unsigned n)
return str;
}
-static const char *_error_str(int error_code)
-{
- switch (error_code) {
- case AACS_SUCCESS:
- return "No errors";
- case AACS_ERROR_CORRUPTED_DISC:
- return "Corrupted BluRay disc";
- case AACS_ERROR_NO_CONFIG:
- return "Missing configuration file(s)";
- case AACS_ERROR_NO_PK:
- return "No matching processing key in configuration file(s)";
- case AACS_ERROR_NO_CERT:
- return "No valid certificates in configuration file(s)";
- case AACS_ERROR_CERT_REVOKED:
- return "All available certificates have been revoked";
- case AACS_ERROR_MMC_OPEN:
- return "MMC open failed";
- case AACS_ERROR_MMC_FAILURE:
- return "MMC authentication failed";
- }
- return "Unknown error";
-}
-
static void _dump_rl(const char *type, AACS_RL_ENTRY *rl, int num_entries, int
mkb_version)
{
int ii;
@@ -107,7 +84,7 @@ int main (int argc, char **argv)
error_code = aacs_open_device(aacs, argv[1], argc > 2 ? argv[2] : NULL);
if (error_code) {
- fprintf(stderr, "libaacs open failed: %s\n", _error_str(error_code));
+ fprintf(stderr, "libaacs open failed: %s\n",
aacs_error_str(error_code));
} else {
printf("libaacs open succeed.\n");
}
=====================================
src/file/keydbcfg-parser.y
=====================================
@@ -286,6 +286,7 @@ disc_info
if (!cf->list) {
celist = cf->list = new_title_entry_list();
} else {
+ for (; celist->next; celist = celist->next) ;
celist->next = new_title_entry_list();
celist = celist->next;
}
=====================================
src/libaacs/aacs.c
=====================================
@@ -1121,6 +1121,26 @@ void aacs_get_version(int *major, int *minor, int *micro)
*micro = AACS_VERSION_MICRO;
}
+const char *aacs_error_str(int err)
+{
+ static const char * const str[] = {
+ [-AACS_SUCCESS] = "Success",
+ [-AACS_ERROR_CORRUPTED_DISC] = "Corrupt disc",
+ [-AACS_ERROR_NO_CONFIG] = "Missing configuration file",
+ [-AACS_ERROR_NO_PK] = "No matching processing key",
+ [-AACS_ERROR_NO_CERT] = "No valid certificate",
+ [-AACS_ERROR_CERT_REVOKED] = "Revoked certificate",
+ [-AACS_ERROR_MMC_OPEN] = "Failed opening MMC device",
+ [-AACS_ERROR_MMC_FAILURE] = "MMC failure",
+ [-AACS_ERROR_NO_DK] = "No matching device key",
+ };
+ err = -err;
+ if (err < 0 || (size_t)err >= sizeof(str) / sizeof(str[0]) || !str[err]) {
+ return "Unknown error code";
+ }
+ return str[err];
+}
+
/* aacs_open2() wrapper for backwards compability */
AACS *aacs_open(const char *path, const char *configfile_path)
{
@@ -1337,7 +1357,9 @@ const uint8_t *aacs_get_content_cert_id(AACS *aacs)
const uint8_t *aacs_get_bdj_root_cert_hash(AACS *aacs)
{
if (aacs && aacs->cc) {
+ if (!aacs->cc->aacs2) {
return aacs->cc->bdj_root_cert_hash;
+ }
}
return NULL;
}
=====================================
src/libaacs/aacs.h
=====================================
@@ -40,6 +40,8 @@
#define AACS_ERROR_MMC_FAILURE -7 /* MMC failed */
#define AACS_ERROR_NO_DK -8 /* no matching device key */
+AACS_PUBLIC const char *aacs_error_str(int error);
+
/**
* Opaque type for AACS object
*/
View it on GitLab:
https://code.videolan.org/videolan/libaacs/-/compare/d21f488eb8c8c23ed693f4551e1428e4622ec25b...1aefe1c8adad97a632984896986d7baeb871e0aa
--
View it on GitLab:
https://code.videolan.org/videolan/libaacs/-/compare/d21f488eb8c8c23ed693f4551e1428e4622ec25b...1aefe1c8adad97a632984896986d7baeb871e0aa
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