mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Fixed a possible crash when pulling the CAM while decrypting a channel with MTD (cont'd)
This commit is contained in:
parent
1a31974789
commit
a1fda4f218
7
ci.c
7
ci.c
@ -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 4.12 2017/04/24 09:05:49 kls Exp $
|
* $Id: ci.c 4.13 2017/04/26 09:18:26 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ci.h"
|
#include "ci.h"
|
||||||
@ -1971,7 +1971,10 @@ void cCamSlot::Process(cTPDU *TPDU)
|
|||||||
StopDecrypting();
|
StopDecrypting();
|
||||||
DeleteAllConnections();
|
DeleteAllConnections();
|
||||||
CancelActivation();
|
CancelActivation();
|
||||||
MtdActivate(false);
|
if (mtdHandler)
|
||||||
|
mtdHandler->UnAssignAll();
|
||||||
|
else
|
||||||
|
Assign(NULL);
|
||||||
break;
|
break;
|
||||||
case msReset:
|
case msReset:
|
||||||
dbgprotocol("Slot %d: module reset\n", slotNumber);
|
dbgprotocol("Slot %d: module reset\n", slotNumber);
|
||||||
|
8
mtd.c
8
mtd.c
@ -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: mtd.c 1.9 2017/03/27 14:26:04 kls Exp $
|
* $Id: mtd.c 1.10 2017/04/26 08:33:54 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "mtd.h"
|
#include "mtd.h"
|
||||||
@ -136,6 +136,12 @@ bool cMtdHandler::Devices(cVector<int> &CardIndexes)
|
|||||||
return CardIndexes.Size() > 0;
|
return CardIndexes.Size() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cMtdHandler::UnAssignAll(void)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < camSlots.Size(); i++)
|
||||||
|
camSlots[i]->Assign(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
// --- cMtdMapper ------------------------------------------------------------
|
// --- cMtdMapper ------------------------------------------------------------
|
||||||
|
|
||||||
#define MTD_INVALID_PID 0xFFFF
|
#define MTD_INVALID_PID 0xFFFF
|
||||||
|
4
mtd.h
4
mtd.h
@ -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: mtd.h 1.6 2017/03/27 08:30:00 kls Exp $
|
* $Id: mtd.h 1.7 2017/04/26 09:17:08 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __MTD_H
|
#ifndef __MTD_H
|
||||||
@ -140,6 +140,8 @@ public:
|
|||||||
///< Adds the card indexes of the devices of any active MTD CAM slots to
|
///< Adds the card indexes of the devices of any active MTD CAM slots to
|
||||||
///< the given CardIndexes.
|
///< the given CardIndexes.
|
||||||
///< Returns true if the array is not empty.
|
///< Returns true if the array is not empty.
|
||||||
|
void UnAssignAll(void);
|
||||||
|
///< Unassigns all MTD CAM slots from their devices.
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MTD_DONT_CALL(v) dsyslog("PROGRAMMING ERROR (%s,%d): DON'T CALL %s", __FILE__, __LINE__, __FUNCTION__); return v;
|
#define MTD_DONT_CALL(v) dsyslog("PROGRAMMING ERROR (%s,%d): DON'T CALL %s", __FILE__, __LINE__, __FUNCTION__); return v;
|
||||||
|
Loading…
Reference in New Issue
Block a user