rust/pv_*: Add more deny lints to pv and pv_core

Denies compiling if one of the following lints find something in pv or
pv_core:
    missing_docs,
    missing_debug_implementations,
    trivial_numeric_casts,
    unstable_features,
    unused_import_braces,
    unused_qualifications

Those lint force developers to avoid unnecessary code and providing
debuggability & documentation for each public symbol.

Fix the compile time error introduced with those lints.

Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
Signed-off-by: Steffen Eiden <seiden@linux.ibm.com>
This commit is contained in:
Steffen Eiden
2024-05-23 14:35:30 +02:00
parent f383278a5a
commit 87d43c7a32
12 changed files with 31 additions and 11 deletions

View File

@@ -46,6 +46,7 @@ impl TryFrom<Vec<u8>> for BootHdrTags {
}
/// Magic value for a SE-(boot)header
#[derive(Debug)]
pub struct BootHdrMagic;
impl MagicValue<8> for BootHdrMagic {
const MAGIC: [u8; 8] = [0x49, 0x42, 0x4d, 0x53, 0x65, 0x63, 0x45, 0x78];

View File

@@ -2,7 +2,14 @@
//
// Copyright IBM Corp. 2023, 2024
#![deny(missing_docs)]
#![deny(
missing_docs,
missing_debug_implementations,
trivial_numeric_casts,
unstable_features,
unused_import_braces,
unused_qualifications
)]
#![doc = include_str!("../README.md")]
//! # Manage guest secret store
//!

View File

@@ -111,7 +111,7 @@ impl StackableX509Crl {
);
if r.is_null() {
let err = openssl_sys::ERR_peek_last_error();
if openssl_sys::ERR_GET_LIB(err) as c_int == openssl_sys::ERR_LIB_PEM
if openssl_sys::ERR_GET_LIB(err) == openssl_sys::ERR_LIB_PEM
&& openssl_sys::ERR_GET_REASON(err) == openssl_sys::PEM_R_NO_START_LINE
{
openssl_sys::ERR_clear_error();

View File

@@ -54,6 +54,7 @@ pub trait Encrypt {
}
/// Types of Authenticated Data
#[allow(missing_debug_implementations)]
pub enum Aad<'a> {
/// Authenticated Keyslot
Ks(&'a Keyslot),
@@ -207,7 +208,7 @@ impl ReqEncrCtx {
let mut auth_data: Vec<u8> = Vec::with_capacity(2048);
// reserve space for the request header
auth_data.resize(std::mem::size_of::<RequestHdr>(), 0);
auth_data.resize(size_of::<RequestHdr>(), 0);
for a in aad {
match a {
@@ -229,7 +230,7 @@ impl ReqEncrCtx {
let req_hdr = RequestHdr::new(version, rql, self.iv, nks, sea, magic);
// copy request header to the start of the request
auth_data[..std::mem::size_of::<RequestHdr>()].copy_from_slice(req_hdr.as_bytes());
auth_data[..size_of::<RequestHdr>()].copy_from_slice(req_hdr.as_bytes());
Ok(auth_data)
}

View File

@@ -30,7 +30,7 @@ macro_rules! get_test_asset {
}
pub fn get_cert_asset_path<P: AsRef<Path>>(path: P) -> PathBuf {
let mut p = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR"));
let mut p = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
p.push("tests");
p.push("assets");
p.push("cert");

View File

@@ -261,7 +261,7 @@ fn load_crl_to_store(
x509_store: &mut X509StoreBuilder,
path: &Path,
err_out_empty_crl: bool,
) -> std::result::Result<(), openssl::error::ErrorStack> {
) -> std::result::Result<(), ErrorStack> {
let lu = x509_store.add_lookup(X509Lookup::<File>::file())?;
// Try to load cert as PEM file
if lu.load_crl_file(path, SslFiletype::PEM).is_err() {

View File

@@ -1,7 +1,14 @@
// SPDX-License-Identifier: MIT
//
// Copyright IBM Corp. 2023, 2024
#![deny(missing_docs)]
#![deny(
missing_docs,
missing_debug_implementations,
trivial_numeric_casts,
unstable_features,
unused_import_braces,
unused_qualifications
)]
#![doc = include_str!("../README.md")]
mod error;
mod macros;

View File

@@ -224,8 +224,8 @@ pub fn read_exact_file<P: AsRef<Path>, const COUNT: usize>(
path: P,
ctx: &str,
) -> Result<[u8; COUNT]> {
let mut f = std::fs::File::open(&path).map_err(|e| Error::FileAccess {
ty: crate::FileAccessErrorType::Open,
let mut f = File::open(&path).map_err(|e| Error::FileAccess {
ty: FileAccessErrorType::Open,
path: path_to_str!(path).to_string(),
source: e,
})?;

View File

@@ -187,6 +187,7 @@ pub enum UvcSuccess {
///
///
/// ```
#[derive(Debug)]
pub struct UvDevice(File);
impl UvDevice {

View File

@@ -10,6 +10,7 @@ use std::io::Read;
///
/// The List Secrets Ultravisor call is used to list the
/// secrets that are in the secret store for the current SE-guest.
#[derive(Debug)]
pub struct ListCmd(Vec<u8>);
impl ListCmd {
fn with_size(size: usize) -> Self {
@@ -44,6 +45,7 @@ impl UvCmd for ListCmd {
///
/// The Add Secret Ultravisor-call is used to add a secret
/// to the secret store for the current SE-guest.
#[derive(Debug)]
pub struct AddCmd(Vec<u8>);
impl AddCmd {
@@ -101,6 +103,7 @@ impl UvCmd for AddCmd {
/// all changes to the secret store. Upon successful
/// completion of a Lock Secret Store Ultravisor-call, any
/// request to modify the secret store will fail.
#[derive(Debug)]
pub struct LockCmd;
impl UvCmd for LockCmd {
const UV_IOCTL_NR: u8 = ffi::UVIO_IOCTL_LOCK_SECRETS_NR;

View File

@@ -278,7 +278,7 @@ fn ser_u16<S: Serializer>(v: &U16<BigEndian>, ser: S) -> Result<S::Ok, S::Error>
/// Secret types that can appear in a [`SecretList`]
#[non_exhaustive]
#[derive(PartialEq, Eq)]
#[derive(PartialEq, Eq, Debug)]
pub enum ListableSecretType {
/// Association Secret
Association,

View File

@@ -126,7 +126,7 @@ impl UvCmd for TestCmd {
impl UvDevice {
///use some random fd for `uvdevice` its OK, as the ioctl is mocked and never touches the passed file
fn test_dev() -> Self {
UvDevice(unsafe { std::fs::File::from_raw_fd(17) })
UvDevice(unsafe { File::from_raw_fd(17) })
}
}