offset field of struct crypt_active_device disagrees with crypt_get_data_offset() when accessing bitlocker volume
#include <libcryptsetup.h>
#include <stdio.h>
int main( int argc, char ** argv )
{
struct crypt_device * cd ;
struct crypt_active_device cad ;
const char * mapper = argv[ 1 ] ;
if( crypt_init_by_name( &cd,mapper ) == 0 ){
crypt_get_active_device( cd,mapper,&cad ) ;
printf( "cad.offset\t\t:%d\n",(int)(cad.offset) ) ;
printf( "crypt_get_data_offset\t:%d\n",(int)(crypt_get_data_offset( cd )) );
}
return 0 ;
}
Above sample code produces the following result when run with luks1,luks2,bitlocker and tcrypt mappers and the two values disagree only with bitlocker volume.
Tested with cryptsetup 2.3.0-rc0
[root@mtz ink]# ./test /dev/mapper/zuluCrypt-500-NAAN-bitlocker.vhd-3807121262
cad.offset :16
crypt_get_data_offset :0
[root@mtz ink]# ./test /dev/mapper/zuluCrypt-500-NAAN-luks.img-3482333547
cad.offset :4096
crypt_get_data_offset :4096
[root@mtz ink]# ./test /dev/mapper/zuluCrypt-500-NAAN-luks2.img-4147493883
cad.offset :32768
crypt_get_data_offset :32768
[root@mtz ink]# ./test /dev/mapper/zuluCrypt-500-NAAN-tcrypt.img-3078912422
cad.offset :256
crypt_get_data_offset :256
[root@mtz ink]#
Edited by Francis Banyikwa