@@ -450,18 +450,18 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize,
450450 char rule_array [8 ];
451451 struct lv1 {
452452 u16 len ;
453- u8 clrkey [0 ];
453+ u8 clrkey [];
454454 } lv1 ;
455- struct lv2 {
456- u16 len ;
457- struct keyid {
458- u16 len ;
459- u16 attr ;
460- u8 data [SECKEYBLOBSIZE ];
461- } keyid ;
462- } lv2 ;
455+ /* followed by struct lv2 */
463456 } __packed * preqparm ;
464- struct lv2 * plv2 ;
457+ struct lv2 {
458+ u16 len ;
459+ struct keyid {
460+ u16 len ;
461+ u16 attr ;
462+ u8 data [SECKEYBLOBSIZE ];
463+ } keyid ;
464+ } __packed * plv2 ;
465465 struct cmrepparm {
466466 u8 subfunc_code [2 ];
467467 u16 rule_array_len ;
@@ -512,11 +512,11 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize,
512512 }
513513 preqparm -> lv1 .len = sizeof (struct lv1 ) + keysize ;
514514 memcpy (preqparm -> lv1 .clrkey , clrkey , keysize );
515- plv2 = (struct lv2 * )(((u8 * )& preqparm -> lv2 ) + keysize );
515+ plv2 = (struct lv2 * )(((u8 * )preqparm ) + sizeof ( * preqparm ) + keysize );
516516 plv2 -> len = sizeof (struct lv2 );
517517 plv2 -> keyid .len = sizeof (struct keyid );
518518 plv2 -> keyid .attr = 0x30 ;
519- preqcblk -> req_parml = sizeof (struct cmreqparm ) + keysize ;
519+ preqcblk -> req_parml = sizeof (* preqparm ) + keysize + sizeof ( * plv2 ) ;
520520
521521 /* fill xcrb struct */
522522 prep_xcrb (& xcrb , cardnr , preqcblk , prepcblk );
@@ -761,22 +761,22 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags,
761761 u16 key_name_2_len ;
762762 u16 user_data_1_len ;
763763 u16 user_data_2_len ;
764- u8 key_name_1 [0 ];
765- u8 key_name_2 [0 ];
766- u8 user_data_1 [0 ];
767- u8 user_data_2 [0 ];
764+ /* u8 key_name_1[]; */
765+ /* u8 key_name_2[]; */
766+ /* u8 user_data_1[]; */
767+ /* u8 user_data_2[]; */
768768 } vud ;
769769 struct {
770770 u16 len ;
771771 struct {
772772 u16 len ;
773773 u16 flag ;
774- u8 kek_id_1 [0 ];
774+ /* u8 kek_id_1[]; */
775775 } tlv1 ;
776776 struct {
777777 u16 len ;
778778 u16 flag ;
779- u8 kek_id_2 [0 ];
779+ /* u8 kek_id_2[]; */
780780 } tlv2 ;
781781 struct {
782782 u16 len ;
@@ -786,17 +786,17 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags,
786786 struct {
787787 u16 len ;
788788 u16 flag ;
789- u8 gen_key_id_1_label [0 ];
789+ /* u8 gen_key_id_1_label[]; */
790790 } tlv4 ;
791791 struct {
792792 u16 len ;
793793 u16 flag ;
794- u8 gen_key_id_2 [0 ];
794+ /* u8 gen_key_id_2[]; */
795795 } tlv5 ;
796796 struct {
797797 u16 len ;
798798 u16 flag ;
799- u8 gen_key_id_2_label [0 ];
799+ /* u8 gen_key_id_2_label[]; */
800800 } tlv6 ;
801801 } kb ;
802802 } __packed * preqparm ;
@@ -811,7 +811,7 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags,
811811 struct {
812812 u16 len ;
813813 u16 flag ;
814- u8 gen_key [0 ]; /* 120-136 bytes */
814+ u8 gen_key []; /* 120-136 bytes */
815815 } tlv1 ;
816816 } kb ;
817817 } __packed * prepparm ;
@@ -955,7 +955,7 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain,
955955 struct rule_array_block {
956956 u8 subfunc_code [2 ];
957957 u16 rule_array_len ;
958- char rule_array [0 ];
958+ char rule_array [];
959959 } __packed * preq_ra_block ;
960960 struct vud_block {
961961 u16 len ;
@@ -967,15 +967,15 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain,
967967 struct {
968968 u16 len ;
969969 u16 flag ; /* 0x0063 */
970- u8 clr_key [0 ]; /* clear key value bytes */
970+ u8 clr_key []; /* clear key value bytes */
971971 } tlv2 ;
972972 } __packed * preq_vud_block ;
973973 struct key_block {
974974 u16 len ;
975975 struct {
976976 u16 len ;
977977 u16 flag ; /* 0x0030 */
978- u8 key_token [0 ]; /* key skeleton */
978+ u8 key_token []; /* key skeleton */
979979 } tlv1 ;
980980 } __packed * preq_key_block ;
981981 struct iprepparm {
@@ -989,7 +989,7 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain,
989989 struct {
990990 u16 len ;
991991 u16 flag ; /* 0x0030 */
992- u8 key_token [0 ]; /* key token */
992+ u8 key_token []; /* key token */
993993 } tlv1 ;
994994 } kb ;
995995 } __packed * prepparm ;
@@ -1201,7 +1201,7 @@ int cca_cipher2protkey(u16 cardnr, u16 domain, const u8 *ckey,
12011201 u16 len ;
12021202 u16 cca_key_token_len ;
12031203 u16 cca_key_token_flags ;
1204- u8 cca_key_token [0 ]; // 64 or more
1204+ u8 cca_key_token []; /* 64 or more */
12051205 } kb ;
12061206 } __packed * preqparm ;
12071207 struct aurepparm {
@@ -1370,7 +1370,7 @@ int cca_ecc2protkey(u16 cardnr, u16 domain, const u8 *key,
13701370 u16 len ;
13711371 u16 cca_key_token_len ;
13721372 u16 cca_key_token_flags ;
1373- u8 cca_key_token [0 ];
1373+ u8 cca_key_token [];
13741374 } kb ;
13751375 } __packed * preqparm ;
13761376 struct aurepparm {
@@ -1387,17 +1387,15 @@ int cca_ecc2protkey(u16 cardnr, u16 domain, const u8 *key,
13871387 u8 form ;
13881388 u8 pad1 [3 ];
13891389 u16 keylen ;
1390- u8 key [0 ]; /* the key (keylen bytes) */
1391- u16 keyattrlen ;
1392- u8 keyattr [32 ];
1393- u8 pad2 [1 ];
1394- u8 vptype ;
1395- u8 vp [32 ]; /* verification pattern */
1390+ u8 key []; /* the key (keylen bytes) */
1391+ /* u16 keyattrlen; */
1392+ /* u8 keyattr[32]; */
1393+ /* u8 pad2[1]; */
1394+ /* u8 vptype; */
1395+ /* u8 vp[32]; verification pattern */
13961396 } ckb ;
13971397 } vud ;
1398- struct {
1399- u16 len ;
1400- } kb ;
1398+ /* followed by a key block */
14011399 } __packed * prepparm ;
14021400 int keylen = ((struct eccprivkeytoken * )key )-> len ;
14031401
@@ -1525,7 +1523,7 @@ int cca_query_crypto_facility(u16 cardnr, u16 domain,
15251523 size_t parmbsize = sizeof (struct fqreqparm );
15261524 struct fqrepparm {
15271525 u8 subfunc_code [2 ];
1528- u8 lvdata [0 ];
1526+ u8 lvdata [];
15291527 } __packed * prepparm ;
15301528
15311529 /* get already prepared memory for 2 cprbs with param block each */
0 commit comments