Commit 3b42877c authored by Harald Freudenberger's avatar Harald Freudenberger Committed by Vasily Gorbik

s390/zcrypt: rework arrays with length zero occurrences

Review and rework all the zero length array occurrences
within structs to flexible array fields or comment if
not used at all. However, some struct fields are there
for documentation purpose or to have correct sizeof()
evaluation of a struct and thus should not get deleted.
Signed-off-by: default avatarHarald Freudenberger <freude@linux.ibm.com>
Acked-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Reviewed-by: default avatarHolger Dengler <dengler@linux.ibm.com>
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent e20985a7
...@@ -168,7 +168,7 @@ static inline int zcrypt_type6_crt_key(struct ica_rsa_modexpo_crt *crt, void *p) ...@@ -168,7 +168,7 @@ static inline int zcrypt_type6_crt_key(struct ica_rsa_modexpo_crt *crt, void *p)
struct t6_keyblock_hdr t6_hdr; struct t6_keyblock_hdr t6_hdr;
struct cca_token_hdr token; struct cca_token_hdr token;
struct cca_pvt_ext_crt_sec pvt; struct cca_pvt_ext_crt_sec pvt;
char key_parts[0]; char key_parts[];
} __packed *key = p; } __packed *key = p;
struct cca_public_sec *pub; struct cca_public_sec *pub;
int short_len, long_len, pad_len, key_len, size; int short_len, long_len, pad_len, key_len, size;
......
...@@ -450,8 +450,10 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize, ...@@ -450,8 +450,10 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize,
char rule_array[8]; char rule_array[8];
struct lv1 { struct lv1 {
u16 len; u16 len;
u8 clrkey[0]; u8 clrkey[];
} lv1; } lv1;
/* followed by struct lv2 */
} __packed * preqparm;
struct lv2 { struct lv2 {
u16 len; u16 len;
struct keyid { struct keyid {
...@@ -459,9 +461,7 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize, ...@@ -459,9 +461,7 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize,
u16 attr; u16 attr;
u8 data[SECKEYBLOBSIZE]; u8 data[SECKEYBLOBSIZE];
} keyid; } keyid;
} lv2; } __packed * plv2;
} __packed * preqparm;
struct lv2 *plv2;
struct cmrepparm { struct cmrepparm {
u8 subfunc_code[2]; u8 subfunc_code[2];
u16 rule_array_len; u16 rule_array_len;
...@@ -512,11 +512,11 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize, ...@@ -512,11 +512,11 @@ int cca_clr2seckey(u16 cardnr, u16 domain, u32 keybitsize,
} }
preqparm->lv1.len = sizeof(struct lv1) + keysize; preqparm->lv1.len = sizeof(struct lv1) + keysize;
memcpy(preqparm->lv1.clrkey, clrkey, keysize); memcpy(preqparm->lv1.clrkey, clrkey, keysize);
plv2 = (struct lv2 *)(((u8 *)&preqparm->lv2) + keysize); plv2 = (struct lv2 *)(((u8 *)preqparm) + sizeof(*preqparm) + keysize);
plv2->len = sizeof(struct lv2); plv2->len = sizeof(struct lv2);
plv2->keyid.len = sizeof(struct keyid); plv2->keyid.len = sizeof(struct keyid);
plv2->keyid.attr = 0x30; plv2->keyid.attr = 0x30;
preqcblk->req_parml = sizeof(struct cmreqparm) + keysize; preqcblk->req_parml = sizeof(*preqparm) + keysize + sizeof(*plv2);
/* fill xcrb struct */ /* fill xcrb struct */
prep_xcrb(&xcrb, cardnr, preqcblk, prepcblk); prep_xcrb(&xcrb, cardnr, preqcblk, prepcblk);
...@@ -761,22 +761,22 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags, ...@@ -761,22 +761,22 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags,
u16 key_name_2_len; u16 key_name_2_len;
u16 user_data_1_len; u16 user_data_1_len;
u16 user_data_2_len; u16 user_data_2_len;
u8 key_name_1[0]; /* u8 key_name_1[]; */
u8 key_name_2[0]; /* u8 key_name_2[]; */
u8 user_data_1[0]; /* u8 user_data_1[]; */
u8 user_data_2[0]; /* u8 user_data_2[]; */
} vud; } vud;
struct { struct {
u16 len; u16 len;
struct { struct {
u16 len; u16 len;
u16 flag; u16 flag;
u8 kek_id_1[0]; /* u8 kek_id_1[]; */
} tlv1; } tlv1;
struct { struct {
u16 len; u16 len;
u16 flag; u16 flag;
u8 kek_id_2[0]; /* u8 kek_id_2[]; */
} tlv2; } tlv2;
struct { struct {
u16 len; u16 len;
...@@ -786,17 +786,17 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags, ...@@ -786,17 +786,17 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags,
struct { struct {
u16 len; u16 len;
u16 flag; u16 flag;
u8 gen_key_id_1_label[0]; /* u8 gen_key_id_1_label[]; */
} tlv4; } tlv4;
struct { struct {
u16 len; u16 len;
u16 flag; u16 flag;
u8 gen_key_id_2[0]; /* u8 gen_key_id_2[]; */
} tlv5; } tlv5;
struct { struct {
u16 len; u16 len;
u16 flag; u16 flag;
u8 gen_key_id_2_label[0]; /* u8 gen_key_id_2_label[]; */
} tlv6; } tlv6;
} kb; } kb;
} __packed * preqparm; } __packed * preqparm;
...@@ -811,7 +811,7 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags, ...@@ -811,7 +811,7 @@ int cca_gencipherkey(u16 cardnr, u16 domain, u32 keybitsize, u32 keygenflags,
struct { struct {
u16 len; u16 len;
u16 flag; u16 flag;
u8 gen_key[0]; /* 120-136 bytes */ u8 gen_key[]; /* 120-136 bytes */
} tlv1; } tlv1;
} kb; } kb;
} __packed * prepparm; } __packed * prepparm;
...@@ -955,7 +955,7 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain, ...@@ -955,7 +955,7 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain,
struct rule_array_block { struct rule_array_block {
u8 subfunc_code[2]; u8 subfunc_code[2];
u16 rule_array_len; u16 rule_array_len;
char rule_array[0]; char rule_array[];
} __packed * preq_ra_block; } __packed * preq_ra_block;
struct vud_block { struct vud_block {
u16 len; u16 len;
...@@ -967,7 +967,7 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain, ...@@ -967,7 +967,7 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain,
struct { struct {
u16 len; u16 len;
u16 flag; /* 0x0063 */ u16 flag; /* 0x0063 */
u8 clr_key[0]; /* clear key value bytes */ u8 clr_key[]; /* clear key value bytes */
} tlv2; } tlv2;
} __packed * preq_vud_block; } __packed * preq_vud_block;
struct key_block { struct key_block {
...@@ -975,7 +975,7 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain, ...@@ -975,7 +975,7 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain,
struct { struct {
u16 len; u16 len;
u16 flag; /* 0x0030 */ u16 flag; /* 0x0030 */
u8 key_token[0]; /* key skeleton */ u8 key_token[]; /* key skeleton */
} tlv1; } tlv1;
} __packed * preq_key_block; } __packed * preq_key_block;
struct iprepparm { struct iprepparm {
...@@ -989,7 +989,7 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain, ...@@ -989,7 +989,7 @@ static int _ip_cprb_helper(u16 cardnr, u16 domain,
struct { struct {
u16 len; u16 len;
u16 flag; /* 0x0030 */ u16 flag; /* 0x0030 */
u8 key_token[0]; /* key token */ u8 key_token[]; /* key token */
} tlv1; } tlv1;
} kb; } kb;
} __packed * prepparm; } __packed * prepparm;
...@@ -1201,7 +1201,7 @@ int cca_cipher2protkey(u16 cardnr, u16 domain, const u8 *ckey, ...@@ -1201,7 +1201,7 @@ int cca_cipher2protkey(u16 cardnr, u16 domain, const u8 *ckey,
u16 len; u16 len;
u16 cca_key_token_len; u16 cca_key_token_len;
u16 cca_key_token_flags; u16 cca_key_token_flags;
u8 cca_key_token[0]; // 64 or more u8 cca_key_token[]; /* 64 or more */
} kb; } kb;
} __packed * preqparm; } __packed * preqparm;
struct aurepparm { struct aurepparm {
...@@ -1370,7 +1370,7 @@ int cca_ecc2protkey(u16 cardnr, u16 domain, const u8 *key, ...@@ -1370,7 +1370,7 @@ int cca_ecc2protkey(u16 cardnr, u16 domain, const u8 *key,
u16 len; u16 len;
u16 cca_key_token_len; u16 cca_key_token_len;
u16 cca_key_token_flags; u16 cca_key_token_flags;
u8 cca_key_token[0]; u8 cca_key_token[];
} kb; } kb;
} __packed * preqparm; } __packed * preqparm;
struct aurepparm { struct aurepparm {
...@@ -1387,17 +1387,15 @@ int cca_ecc2protkey(u16 cardnr, u16 domain, const u8 *key, ...@@ -1387,17 +1387,15 @@ int cca_ecc2protkey(u16 cardnr, u16 domain, const u8 *key,
u8 form; u8 form;
u8 pad1[3]; u8 pad1[3];
u16 keylen; u16 keylen;
u8 key[0]; /* the key (keylen bytes) */ u8 key[]; /* the key (keylen bytes) */
u16 keyattrlen; /* u16 keyattrlen; */
u8 keyattr[32]; /* u8 keyattr[32]; */
u8 pad2[1]; /* u8 pad2[1]; */
u8 vptype; /* u8 vptype; */
u8 vp[32]; /* verification pattern */ /* u8 vp[32]; verification pattern */
} ckb; } ckb;
} vud; } vud;
struct { /* followed by a key block */
u16 len;
} kb;
} __packed * prepparm; } __packed * prepparm;
int keylen = ((struct eccprivkeytoken *)key)->len; int keylen = ((struct eccprivkeytoken *)key)->len;
...@@ -1525,7 +1523,7 @@ int cca_query_crypto_facility(u16 cardnr, u16 domain, ...@@ -1525,7 +1523,7 @@ int cca_query_crypto_facility(u16 cardnr, u16 domain,
size_t parmbsize = sizeof(struct fqreqparm); size_t parmbsize = sizeof(struct fqreqparm);
struct fqrepparm { struct fqrepparm {
u8 subfunc_code[2]; u8 subfunc_code[2];
u8 lvdata[0]; u8 lvdata[];
} __packed * prepparm; } __packed * prepparm;
/* get already prepared memory for 2 cprbs with param block each */ /* get already prepared memory for 2 cprbs with param block each */
......
...@@ -1275,7 +1275,7 @@ int ep11_kblob2protkey(u16 card, u16 dom, const u8 *keyblob, size_t keybloblen, ...@@ -1275,7 +1275,7 @@ int ep11_kblob2protkey(u16 card, u16 dom, const u8 *keyblob, size_t keybloblen,
u32 pkeybitsize; u32 pkeybitsize;
u64 pkeysize; u64 pkeysize;
u8 res2[8]; u8 res2[8];
u8 pkey[0]; u8 pkey[];
} __packed * wki; } __packed * wki;
const u8 *key; const u8 *key;
struct ep11kblob_header *hdr; struct ep11kblob_header *hdr;
......
...@@ -208,7 +208,7 @@ static int icamex_msg_to_type6mex_msgx(struct zcrypt_queue *zq, ...@@ -208,7 +208,7 @@ static int icamex_msg_to_type6mex_msgx(struct zcrypt_queue *zq,
struct CPRBX cprbx; struct CPRBX cprbx;
struct function_and_rules_block fr; struct function_and_rules_block fr;
unsigned short length; unsigned short length;
char text[0]; char text[];
} __packed * msg = ap_msg->msg; } __packed * msg = ap_msg->msg;
int size; int size;
...@@ -278,7 +278,7 @@ static int icacrt_msg_to_type6crt_msgx(struct zcrypt_queue *zq, ...@@ -278,7 +278,7 @@ static int icacrt_msg_to_type6crt_msgx(struct zcrypt_queue *zq,
struct CPRBX cprbx; struct CPRBX cprbx;
struct function_and_rules_block fr; struct function_and_rules_block fr;
unsigned short length; unsigned short length;
char text[0]; char text[];
} __packed * msg = ap_msg->msg; } __packed * msg = ap_msg->msg;
int size; int size;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment