Skip to content

SIGABRT when scanning corrupt/empty FLAC file #730

@domve

Description

@domve

Nicotine+ version: 2.1.1 and 2.1.2-dev1
Operating System/Distribution: Fedora Workstation 32

Describe the bug

nicotine+ kept crashing when i was trying to import my collection, it kept bringing up C++ assertions and running it through gdb i found out a few of the songs in my library were only 4 bytes (half of the flac signature), removing these fixed it and i was able to continue using it.

/usr/include/c++/10/bits/stl_vector.h:1042: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) [with _Tp = char; _Alloc = std::allocator<char>; std::vector<_Tp, _Alloc>::reference = char&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]: Assertion '__builtin_expect(__n < this->size(), true)' failed.

i realize this might not inherently be a nicotine+ issue, but some sort of warning/workaround would be nice to have.

Expected behavior

ignore these files and run as normal.

Steps to reproduce the bug

  1. unzip and add the attached file to one of the shared folders
  2. run nicotine+ and rescan shares

Additional context

gdb stacktrace:

#1  0x00007ffff7dff895 in abort () from /lib64/libc.so.6
#2  0x00007fffe8555608 in std::__replacement_assert(char const*, int, char const*, char const*) () from /lib64/libtag.so.1
#3  0x00007fffe8553bbb in TagLib::ByteVector::operator[](int) const ()
   from /lib64/libtag.so.1
#4  0x00007fffe855b59a in TagLib::FLAC::File::scan() () from /lib64/libtag.so.1
#5  0x00007fffe855b9fc in TagLib::FLAC::File::read(bool) ()
   from /lib64/libtag.so.1
#6  0x00007fffe855bddc in TagLib::FLAC::File::File(char const*, TagLib::ID3v2::FrameFactory*, bool, TagLib::AudioProperties::ReadStyle) ()
   from /lib64/libtag.so.1
#7  0x00007fffe85822f5 in TagLib::File* (anonymous namespace)::createInternal<char const*>(char const*, bool, TagLib::AudioProperties::ReadStyle) ()
   from /lib64/libtag.so.1
#8  0x00007fffea68a123 in __pyx_tp_new_6taglib_File(_typeobject*, _object*, _object*) ()
   from /usr/lib64/python3.8/site-packages/taglib.cpython-38-x86_64-linux-gnu.so
#9  0x00007ffff7bb6885 in type_call (type=0x7fffea693980, 
    args=('/home/dom/Documents/folder/test.flac',), kwds=0x0)
    at /usr/src/debug/python3-3.8.5-5.fc32.x86_64/Objects/typeobject.c:974
#10 0x00007ffff7bb6681 in _PyObject_MakeTpCall

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions