Changes

187 bytes added ,  05:31, 11 May 2016
Line 36: Line 36:  
The MAC itself is custom based on xor-rot-sub-mul, and is calculated as follows (pseudo-code):
 
The MAC itself is custom based on xor-rot-sub-mul, and is calculated as follows (pseudo-code):
   −
  u32* crypto_state = (u32*) r4; // Safe kernel memory.
+
  u32* crypto_state = (u32*) r4; // Safe kernel memory. This is actually the [[Memory_Management#RegionDescriptor|RegionDescriptor]].
 
  u32* data_ptr = (u32*) lr; // Unsafe FCRAM pointer.
 
  u32* data_ptr = (u32*) lr; // Unsafe FCRAM pointer.
 
   
 
   
Line 60: Line 60:  
The function which initializes a memalloc heap had a major update (used for FCRAM memregions and the SlabHeap container). It generates a random MAC key based on svcGetSystemTick, like this:
 
The function which initializes a memalloc heap had a major update (used for FCRAM memregions and the SlabHeap container). It generates a random MAC key based on svcGetSystemTick, like this:
   −
  crypto_state[16/4] = 0
+
  crypto_state[16/4] = 0 //This is actually the [[Memory_Management#RegionDescriptor|RegionDescriptor]].
 
  crypto_state[20/4] = 0
 
  crypto_state[20/4] = 0
 
  crypto_state[24/4] = 0
 
  crypto_state[24/4] = 0
Line 141: Line 141:  
| svcGetHandleInfo
 
| svcGetHandleInfo
 
| The code which clears the variables that get written into the output 8-byte buffer, was moved to before the code which checks the input type value(previously this was only executed for type 0x32107).
 
| The code which clears the variables that get written into the output 8-byte buffer, was moved to before the code which checks the input type value(previously this was only executed for type 0x32107).
 +
|-
 +
| svcGetSystemInfo
 +
| None
 
|}
 
|}