libaacs | branch: master | npzacs <[email protected]> | Fri Mar 11 13:37:10 2016 
+0200| [7f2a5ff3d304c42bc624f8d8ae30b21f2b4b68cf] | committer: npzacs

Reject empty keys

> http://git.videolan.org/gitweb.cgi/libaacs.git/?a=commit;h=7f2a5ff3d304c42bc624f8d8ae30b21f2b4b68cf
---

 src/file/keydbcfg.c |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/file/keydbcfg.c b/src/file/keydbcfg.c
index 318e6fd..1e12972 100644
--- a/src/file/keydbcfg.c
+++ b/src/file/keydbcfg.c
@@ -570,6 +570,7 @@ static int _parse_embedded(config_file *cf)
 {
     int result = 0, jj;
     unsigned ii;
+    static const uint8_t empty_key[20] = {0};
 
     /* reverse order to maintain key positions (items are added to list head) 
*/
     for (jj = sizeof(internal_dk_list) / sizeof(internal_dk_list[0]) - 1; jj 
>= 0; --jj) {
@@ -601,7 +602,9 @@ static int _parse_embedded(config_file *cf)
 
         decrypt_key(e->key, internal_pk_list[ii], 16);
 
-        if (_is_duplicate_pk(cf->pkl, e->key)) {
+        if (!memcmp(e->key, empty_key, 16) ||
+            _is_duplicate_pk(cf->pkl, e->key)) {
+
             X_FREE(e);
 
         } else {
@@ -620,7 +623,9 @@ static int _parse_embedded(config_file *cf)
         decrypt_key(e->host_priv_key, internal_hc_list[ii],      20);
         decrypt_key(e->host_cert,     internal_hc_list[ii] + 20, 92);
 
-        if (_is_duplicate_cert(cf->host_cert_list, e)) {
+        if (!memcmp(e->host_priv_key, empty_key, 20) ||
+            _is_duplicate_cert(cf->host_cert_list, e)) {
+
             X_FREE(e);
 
         } else {

_______________________________________________
libaacs-devel mailing list
[email protected]
https://mailman.videolan.org/listinfo/libaacs-devel

Reply via email to