Skip to content

Panic index out of bounds: the len is 157 but the index is 157 in src/wavpack/properties.rs #472

Closed
@qarmin

Description

@qarmin

Reproducer

I tried this code:

#![no_main]

use libfuzzer_sys::{fuzz_target, Corpus};
use lofty::file::AudioFile;
use lofty::file::{FileType, TaggedFileExt};
use lofty::probe::Probe;

const ALL_FILE_TYPES: &[FileType] = &[
    FileType::Aac,
    FileType::Aiff,
    FileType::Ape,
    FileType::Flac,
    FileType::Mpeg,
    FileType::Mp4,
    FileType::Mpc,
    FileType::Opus,
    FileType::Vorbis,
    FileType::Speex,
    FileType::Wav,
    FileType::WavPack,
];

fuzz_target!(|data: &[u8]| -> Corpus {
    let mut corpus = Corpus::Reject;
    for i in ALL_FILE_TYPES {
        let s = std::io::Cursor::new(data);
        let tagged_file = match Probe::with_file_type(s, *i).read() {
            Ok(t) => t,
            Err(_e) => {
                continue;
            }
        };
        corpus = Corpus::Keep;
        tagged_file.properties();
        tagged_file.tags();
        tagged_file.primary_tag();
    }

    corpus
});

Summary

thread 'main' panicked at /home/rafal/.cargo/git/checkouts/lofty-rs-f5e48f8219b271cf/4a2bcf5/lofty/src/wavpack/properties.rs:311:34:
index out of bounds: the len is 157 but the index is 157
stack backtrace:
   0: rust_begin_unwind
             at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/std/src/panicking.rs:662:5
   1: core::panicking::panic_fmt
             at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/panicking.rs:74:14
   2: core::panicking::panic_bounds_check
             at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/panicking.rs:276:5
   3: lofty::wavpack::properties::get_extended_meta_info
   4: lofty::wavpack::properties::read_properties
             at /home/rafal/.cargo/git/checkouts/lofty-rs-f5e48f8219b271cf/4a2bcf5/lofty/src/wavpack/properties.rs:158:20
   5: lofty::wavpack::read::read_from
             at /home/rafal/.cargo/git/checkouts/lofty-rs-f5e48f8219b271cf/4a2bcf5/lofty/src/wavpack/read.rs:50:4
   6: <lofty::wavpack::WavPackFile as lofty::file::audio_file::AudioFile>::read_from
             at /home/rafal/.cargo/git/checkouts/lofty-rs-f5e48f8219b271cf/4a2bcf5/lofty/src/wavpack/mod.rs:14:10
   7: lofty::probe::Probe<R>::read
             at /home/rafal/.cargo/git/checkouts/lofty-rs-f5e48f8219b271cf/4a2bcf5/lofty/src/probe.rs:479:26
   8: lofty::check_file
             at /home/rafal/Projekty/Rust/run_command_for_every_file/src/crates/lofty/src/main.rs:42:33
   9: lofty::main
             at /home/rafal/Projekty/Rust/run_command_for_every_file/src/crates/lofty/src/main.rs:26:9
  10: core::ops::function::FnOnce::call_once
             at /rustc/f6e511eec7342f59a25f7c0534f1dbea00d01b14/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Aborted (core dumped)

Expected behavior

No response

Assets

output.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions