mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	Fixed a possible crash when pulling the CAM while decrypting a channel with MTD (cont'd)
This commit is contained in:
		
							
								
								
									
										7
									
								
								ci.c
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								ci.c
									
									
									
									
									
								
							| @@ -4,7 +4,7 @@ | ||||
|  * See the main source file 'vdr.c' for copyright information and | ||||
|  * 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" | ||||
| @@ -1971,7 +1971,10 @@ void cCamSlot::Process(cTPDU *TPDU) | ||||
|                StopDecrypting(); | ||||
|                DeleteAllConnections(); | ||||
|                CancelActivation(); | ||||
|                MtdActivate(false); | ||||
|                if (mtdHandler) | ||||
|                   mtdHandler->UnAssignAll(); | ||||
|                else | ||||
|                   Assign(NULL); | ||||
|                break; | ||||
|           case msReset: | ||||
|                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 | ||||
|  * 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" | ||||
| @@ -136,6 +136,12 @@ bool cMtdHandler::Devices(cVector<int> &CardIndexes) | ||||
|   return CardIndexes.Size() > 0; | ||||
| } | ||||
|  | ||||
| void cMtdHandler::UnAssignAll(void) | ||||
| { | ||||
|   for (int i = 0; i < camSlots.Size(); i++) | ||||
|       camSlots[i]->Assign(NULL); | ||||
| } | ||||
|  | ||||
| // --- cMtdMapper ------------------------------------------------------------ | ||||
|  | ||||
| #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 | ||||
|  * 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 | ||||
| @@ -140,6 +140,8 @@ public: | ||||
|       ///< Adds the card indexes of the devices of any active MTD CAM slots to | ||||
|       ///< the given CardIndexes. | ||||
|       ///< 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; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user