@@ -302,13 +302,14 @@ fn parse_ncsd(cia: &mut CiaReader) {
302302 cia. seek ( 0 ) ;
303303 let mut tmp: [ u8 ; 512 ] = [ 0u8 ; 512 ] ;
304304 cia. read ( & mut tmp) ;
305- let mut header: NcsdHdr = unsafe { std:: mem:: transmute ( tmp) } ;
305+ let header: NcsdHdr = unsafe { std:: mem:: transmute ( tmp) } ;
306306 for idx in 0 ..header. offset_sizetable . len ( ) {
307307 if header. offset_sizetable [ idx] . offset != 0 {
308308 cia. cidx = idx as u16 ;
309309 cia. content_id = idx as u32 ;
310- header. titleid . reverse ( ) ;
311- parse_ncch ( cia, ( header. offset_sizetable [ idx] . offset * MEDIA_UNIT_SIZE ) . clone ( ) . into ( ) , header. titleid ) ;
310+ let mut tid: [ u8 ; 8 ] = header. titleid ;
311+ tid. reverse ( ) ;
312+ parse_ncch ( cia, ( header. offset_sizetable [ idx] . offset * MEDIA_UNIT_SIZE ) . clone ( ) . into ( ) , tid) ;
312313 }
313314 }
314315}
@@ -325,19 +326,19 @@ fn parse_ncch(cia: &mut CiaReader, offs: u64, mut titleid: [u8; 8]) {
325326 cia. seek ( offs) ;
326327 let mut tmp = [ 0u8 ; 512 ] ;
327328 cia. read ( & mut tmp) ;
328- let mut header: NcchHdr = unsafe { std:: mem:: transmute ( tmp) } ;
329+ let header: NcchHdr = unsafe { std:: mem:: transmute ( tmp) } ;
329330 if titleid. iter ( ) . all ( |& x| x == 0 ) {
330331 titleid = header. programid ;
331332 titleid. reverse ( ) ;
332333 }
333334
334335 let ncch_key_y = BigEndian :: read_u128 ( header. signature [ 0 ..16 ] . try_into ( ) . unwrap ( ) ) ;
336+ let mut tid: [ u8 ; 8 ] = header. titleid ;
337+ tid. reverse ( ) ;
335338
336339 debug ! ( " Product code: {}" , std:: str :: from_utf8( & header. productcode) . unwrap( ) ) ;
337340 debug ! ( " KeyY: {:032X}" , ncch_key_y) ;
338- header. titleid . reverse ( ) ;
339- debug ! ( " Title ID: {}" , hex:: encode( header. titleid) . to_uppercase( ) ) ;
340- header. titleid . reverse ( ) ;
341+ debug ! ( " Title ID: {}" , hex:: encode( tid) . to_uppercase( ) ) ;
341342 debug ! ( " Content ID: {:08X}\n " , cia. content_id) ;
342343 debug ! ( " Format version: {}\n " , header. formatversion) ;
343344
@@ -351,7 +352,7 @@ fn parse_ncch(cia: &mut CiaReader, offs: u64, mut titleid: [u8; 8]) {
351352 let mut encrypted: bool = true ;
352353
353354 if flag_to_bool ( header. flags [ 7 ] & 1 ) {
354- if flag_to_bool ( header . titleid [ 3 ] & 16 ) { fixed_crypto = 2 } else { fixed_crypto = 1 }
355+ if flag_to_bool ( tid [ 3 ] & 16 ) { fixed_crypto = 2 } else { fixed_crypto = 1 }
355356 debug ! ( " Uses fixed-key crypto" )
356357 }
357358
0 commit comments