static char * _zuluCryptResolveDevRoot( void ) { const char * e ; char * dev ; string_t st = StringGetFromVirtualFile( "/proc/cmdline" ) ; stringList_t stl = StringListStringSplit( st,' ' ) ; StringDelete( &st ) ; st = StringListHasSequence_1( stl,"root=/dev/" ) ; if( st != StringVoid ){ e = StringContent( st ) + 5 ; dev = zuluCryptResolvePath( e ) ; }else{ st = StringListHasSequence_1( stl,"root=UUID=" ) ; if( st != StringVoid ){ /* * zuluCryptDeviceFromUUID() is defined in ./blkid_evaluate_tag.c */ e = StringContent( st ) + 10 ; dev = zuluCryptDeviceFromUUID( e ) ; }else{ dev = NULL ; } } StringListDelete( &stl ) ; return dev ; }
char * zuluCryptEvaluateDeviceTags( const char * tag,const char * path ) { char * r ; zuluCryptSecurityGainElevatedPrivileges() ; /* * zuluCryptDeviceFromUUID() is defined in ../lib/blkid_evaluate_tag.c * zuluCryptDeviceFromLabel() is defined in ../lib/blkid_evaluate_tag.c */ if( StringsAreEqual( tag,"UUID" ) ){ r = zuluCryptDeviceFromUUID( path ) ; }else{ r = zuluCryptDeviceFromLabel( path ) ; } zuluCryptSecurityDropElevatedPrivileges() ; return r ; }