1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Fixed handling "Ca Info" in case the CAM sends this again if the smart card is replaced with a different one

This commit is contained in:
Klaus Schmidinger 2006-08-20 11:54:56 +02:00
parent a7c9905236
commit cac5cd37b8
2 changed files with 9 additions and 5 deletions

View File

@ -4886,3 +4886,5 @@ Video Disk Recorder Revision History
- Added --remove-destination to the 'cp' command for binaries in the Makefile to - Added --remove-destination to the 'cp' command for binaries in the Makefile to
avoid a crash in case a new version is installed on a running system (suggested avoid a crash in case a new version is installed on a running system (suggested
by Petri Hintukainen). by Petri Hintukainen).
- Fixed handling "Ca Info" in case the CAM sends this again if the smart card is
replaced with a different one.

12
ci.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: ci.c 1.44 2006/08/12 10:14:27 kls Exp $ * $Id: ci.c 1.45 2006/08/20 11:38:33 kls Exp $
*/ */
#include "ci.h" #include "ci.h"
@ -985,6 +985,7 @@ bool cCiConditionalAccessSupport::Process(int Length, const uint8_t *Data)
switch (Tag) { switch (Tag) {
case AOT_CA_INFO: { case AOT_CA_INFO: {
dbgprotocol("%d: <== Ca Info", SessionId()); dbgprotocol("%d: <== Ca Info", SessionId());
numCaSystemIds = 0;
int l = 0; int l = 0;
const uint8_t *d = GetData(Data, l); const uint8_t *d = GetData(Data, l);
while (l > 1) { while (l > 1) {
@ -992,13 +993,14 @@ bool cCiConditionalAccessSupport::Process(int Length, const uint8_t *Data)
dbgprotocol(" %04X", id); dbgprotocol(" %04X", id);
d += 2; d += 2;
l -= 2; l -= 2;
if (numCaSystemIds < MAXCASYSTEMIDS) { if (numCaSystemIds < MAXCASYSTEMIDS)
caSystemIds[numCaSystemIds++] = id; caSystemIds[numCaSystemIds++] = id;
caSystemIds[numCaSystemIds] = 0; else {
}
else
esyslog("ERROR: too many CA system IDs!"); esyslog("ERROR: too many CA system IDs!");
break;
}
} }
caSystemIds[numCaSystemIds] = 0;
dbgprotocol("\n"); dbgprotocol("\n");
} }
state = 2; // got ca info state = 2; // got ca info