[bug report] crypto: user - Implement a generic crypto statistics

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Corentin Labbe,

The patch cac5818c25d0: "crypto: user - Implement a generic crypto
statistics" from Sep 19, 2018, leads to the following static checker
warning:

	crypto/crypto_user_stat.c:53 crypto_report_aead()
	warn: check that 'raead' doesn't leak information (struct has holes)

crypto/crypto_user_stat.c
    34  static int crypto_report_aead(struct sk_buff *skb, struct crypto_alg *alg)
    35  {
    36          struct crypto_stat raead;
                       ^^^^^^^^^^^
    37          u64 v64;
    38          u32 v32;
    39  
    40          strncpy(raead.type, "aead", sizeof(raead.type));
    41  
    42          v32 = atomic_read(&alg->encrypt_cnt);
    43          raead.stat_encrypt_cnt = v32;
    44          v64 = atomic64_read(&alg->encrypt_tlen);
    45          raead.stat_encrypt_tlen = v64;
    46          v32 = atomic_read(&alg->decrypt_cnt);
    47          raead.stat_decrypt_cnt = v32;
    48          v64 = atomic64_read(&alg->decrypt_tlen);
    49          raead.stat_decrypt_tlen = v64;
    50          v32 = atomic_read(&alg->aead_err_cnt);
    51          raead.stat_aead_err_cnt = v32;
    52  
    53          if (nla_put(skb, CRYPTOCFGA_STAT_AEAD,
    54                      sizeof(struct crypto_stat), &raead))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^
We haven't totally initialized raead and also it apparently has struct
holes after the u64s.

    55                  goto nla_put_failure;
    56          return 0;
    57  
    58  nla_put_failure:
    59          return -EMSGSIZE;
    60  }

See also:

crypto/crypto_user_stat.c:53 crypto_report_aead() warn: check that 'raead' doesn't leak information (struct has holes)
crypto/crypto_user_stat.c:81 crypto_report_cipher() warn: check that 'rcipher' doesn't leak information (struct has holes)
crypto/crypto_user_stat.c:108 crypto_report_comp() warn: check that 'rcomp' doesn't leak information (struct has holes)
crypto/crypto_user_stat.c:135 crypto_report_acomp() warn: check that 'racomp' doesn't leak information (struct has holes)
crypto/crypto_user_stat.c:166 crypto_report_akcipher() warn: check that 'rakcipher' doesn't leak information (struct has holes)
crypto/crypto_user_stat.c:191 crypto_report_kpp() warn: check that 'rkpp' doesn't leak information (struct has holes)
crypto/crypto_user_stat.c:215 crypto_report_ahash() warn: check that 'rhash' doesn't leak information (struct has holes)
crypto/crypto_user_stat.c:239 crypto_report_shash() warn: check that 'rhash' doesn't leak information (struct has holes)
crypto/crypto_user_stat.c:265 crypto_report_rng() warn: check that 'rrng' doesn't leak information (struct has holes)
crypto/crypto_user_stat.c:295 crypto_reportstat_one() warn: check that 'rl' doesn't leak information (struct has holes)

regards,
dan carpenter



[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]

  Powered by Linux