Browse Source

Set new code code part only if it is valid.

This fixes Sky Italia HD channels. When they send new
code word the one that is about to expire is set to 0
and this causes short decryption failures. Now if code
word is all zeroes it is not set.
Georgi Chorbadzhiyski 12 years ago
parent
commit
5d32fcf0a6
1 changed files with 8 additions and 5 deletions
  1. 8
    5
      camd.c

+ 8
- 5
camd.c View File

@@ -174,11 +174,14 @@ READ:
174 174
 		c->key->ts = c->key->ts_keyset.tv_sec;
175 175
 		ts->cw_last_warn = c->key->ts;
176 176
 
177
-		dvbcsa_key_set(c->key->cw    , c->key->csakey[0]);
178
-		dvbcsa_key_set(c->key->cw + 8, c->key->csakey[1]);
179
-
180
-		dvbcsa_bs_key_set(c->key->cw    , c->key->bs_csakey[0]);
181
-		dvbcsa_bs_key_set(c->key->cw + 8, c->key->bs_csakey[1]);
177
+		if (memcmp(c->key->cw, invalid_cw, 8) != 0) {
178
+			dvbcsa_key_set   (c->key->cw, c->key->csakey[0]);
179
+			dvbcsa_bs_key_set(c->key->cw, c->key->bs_csakey[0]);
180
+		}
181
+		if (memcmp(c->key->cw + 8, invalid_cw, 8) != 0) {
182
+			dvbcsa_key_set(c->key->cw + 8, c->key->csakey[1]);
183
+			dvbcsa_bs_key_set(c->key->cw + 8, c->key->bs_csakey[1]);
184
+		}
182 185
 	}
183 186
 
184 187
 	if (ts->ecm_cw_log) {

Loading…
Cancel
Save