Re: "Perfect" MP3 fails to import

James Crook <[email protected]> Thu, 15 Apr 2021 17:26:02 +0100
Newsgroups gmane.comp.audio.audacity.devel
Message-ID <CAMe=4iuBGwVGNw=EeiWg3HnDMS6-tW+ac6aX-6mQBqCSYVusPg@mail.gmail.com>
Logged as bug https://bugzilla.audacityteam.org/show_bug.cgi?id=2749

On Thu, 15 Apr 2021 at 16:52, James Crook <[email protected]> wrote:

> With that mp3 file we reach this point in layer3.c, with cachesz == 20 and
> bits_left == -22
>
>   if (cachesz + bits_left < 0)
>     return MAD_ERROR_BADHUFFDATA;  /* big_values overrun */
>
>
> There's a patch here that addresses length issues and changes that code:
>
> https://fossies.org/linux/avidemux/avidemux_plugins/ADM_audioDecoders/ADM_ad_mad/patches/length-check.patch
>
>    635 +     if (cachesz - fakebits < 1)  636 +       return MAD_ERROR_BADHUFFDATA;  637       xrptr[1] = MASK1BIT(bitcache, cachesz--) ?  638         -requantized : requantized;  639     }  640 @@ -1155,9 +1221,6 @@ enum mad_error III_huffdecode(struct mad  641      }  642    }  643    644 -  if (cachesz + bits_left < 0)  645 -    return MAD_ERROR_BADHUFFDATA;  /* big_values overrun */  646 -  647
>
>
> The patch looks pretty extensive.
>
>     From: Kurt Roeckx <[email protected]>
>     Date: Sun, 28 Jan 2018 19:26:36 +0100
>     Subject: Check the size before reading with mad_bit_read
>
>     There are various cases where it attempts to read past the end of the
> buffer
>     using mad_bit_read(). Most functions didn't even know the size of the
> buffer
>     they were reading from.
>
> We are using libmad 0.15.1b.
> Debian have  0.15.2b-9 with these fixes from 2018 in.
>
> This would need careful review.  Probably worth contacting Kurt Roeckx
> too, to confirm we're understanding things correctly, and say thank you.
>
> --James.
>
>
>
>
> On Thu, 15 Apr 2021 at 15:48, Steve Fiddle <[email protected]>
> wrote:
>
>>
>>
>> On Thu, 15 Apr 2021 at 15:41, James Crook <[email protected]>
>> wrote:
>>
>>> Your first message never made it to this list (I just checked the
>>> archive).
>>> What's the link for the mp3?
>>>
>>
>> You can get it here:
>> https://drive.google.com/file/d/1qCPXtsBfFII2NwsSVMZY9k-Lx6sbhlS8/view?usp=sharing
>>
>> Steve
>>
>>
>>>
>>> On Thu, 15 Apr 2021 at 15:35, Steve Fiddle <[email protected]>
>>> wrote:
>>>
>>>> Good detective work James.
>>>>
>>>> Any ideas about the MP3 file (first post of this thread)? Given your
>>>> explanation of the OGG problem, I assume that it is a different issue.
>>>>
>>>> I'm thinking that it is probably an Audacity bug because the file
>>>> appears to be a valid MP3 file. On the other hand, if the MP3 is malformed
>>>> (in some way that I've not been able to detect), then it's rather more open
>>>> to opinion whether or not it is an Audacity bug, or a bug in the
>>>> application that created it.
>>>>
>>>> Steve
>>>>
>>>> On Thu, 15 Apr 2021 at 13:43, James Crook <[email protected]>
>>>> wrote:
>>>>
>>>>> Logged as: https://bugzilla.audacityteam.org/show_bug.cgi?id=2748
>>>>>
>>>>>
>>>>> On Thu, 15 Apr 2021 at 13:27, James Crook <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> It's the same infinite loop as JUCE had:
>>>>>>
>>>>>>
>>>>>> https://forum.juce.com/t/ogg-vorbis-file-puts-juce-oggreader-in-infinite-loop/41148
>>>>>>
>>>>>> So will be fixed if we upgrade to 1.3.7 or later.
>>>>>>
>>>>>> On Thu, 15 Apr 2021 at 13:00, James Crook <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>> On both 3.0.2 and 2.4.2 it's stuck in library file, vorbisfile.c
>>>>>>>
>>>>>>> static int _fseek64_wrap(FILE *f,ogg_int64_t off,int whence){
>>>>>>>   if(f==NULL)return(-1);
>>>>>>>   return fseek(f,off,whence);
>>>>>>> }
>>>>>>>
>>>>>>> 'off' and 'whence' are both zero ( SEEK_SET ==0, SEEK_CUR==1,
>>>>>>> SEEK_END==2).  We're compiled 32 bit on windows.  Anyone know if it hangs
>>>>>>> on mac/linux (compiled 64 bit) too?
>>>>>>>
>>>>>>> --James.
>>>>>>>
>>>>>>>
>>>>>>> On Thu, 15 Apr 2021 at 12:31, James Crook <[email protected]>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Confirmed freezes for me on Windows.
>>>>>>>>
>>>>>>>> On Thu, 15 Apr 2021 at 12:20, Steve Fiddle <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> And by "coincidence" (?), a problem reported importing this ogg
>>>>>>>>> file:
>>>>>>>>>
>>>>>>>>> https://upload.wikimedia.org/wikipedia/commons/0/0f/Claude_Debussy_-_Premi%C3%A8re_Arabesque_-_Patrizia_Prati.ogg
>>>>>>>>>
>>>>>>>>> As with the MP3 file, it can be imported if you select the
>>>>>>>>> "FFmpeg-compatible files" filter, but in this case, using Audacity's native
>>>>>>>>> OGG importer causes Audacity to freeze on both Windows and Linux (not
>>>>>>>>> tested on macOS).
>>>>>>>>>
>>>>>>>>> I don't like coincidences as they may be indicating a deeper
>>>>>>>>> problem.
>>>>>>>>>
>>>>>>>>> Steve
>>>>>>>>>
>>>>>>>>> On Thu, 15 Apr 2021 at 12:01, Steve Fiddle <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> I've tested the attached file with multiple tools in Linux and it
>>>>>>>>>> appears to be perfectly formed, yet Audacity still complains that it is
>>>>>>>>>> malformed and refuses to import it.
>>>>>>>>>>
>>>>>>>>>> Steve
>>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> audacity-devel mailing list
>>>>>>>>> [email protected]
>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/audacity-devel
>>>>>>>>>
>>>>>>>> _______________________________________________
>>>>> audacity-devel mailing list
>>>>> [email protected]
>>>>> https://lists.sourceforge.net/lists/listinfo/audacity-devel
>>>>>
>>>> _______________________________________________
>>>> audacity-devel mailing list
>>>> [email protected]
>>>> https://lists.sourceforge.net/lists/listinfo/audacity-devel
>>>>
>>> _______________________________________________
>>> audacity-devel mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/audacity-devel
>>>
>> _______________________________________________
>> audacity-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/audacity-devel
>>
>

_______________________________________________
audacity-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-devel