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
 		c->key->ts = c->key->ts_keyset.tv_sec;
174
 		c->key->ts = c->key->ts_keyset.tv_sec;
175
 		ts->cw_last_warn = c->key->ts;
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
 	if (ts->ecm_cw_log) {
187
 	if (ts->ecm_cw_log) {

Loading…
Cancel
Save