1
0
Fork 0
forked from len0rd/rockbox
Fork of rockbox tailored for ipod classic
Find a file
Christian Soffke 0469a95bee Playlist Viewer: Mitigate FS#13518 (stack overflow)
Playlist Viewer hangs indefinitely on tracks with long Comment fields

Commit 2156d98 (metadata: mp3: Improve support for long tags) has
allowed the length of parsed tags to exceed ID3V2_MAX_ITEM_SIZE.

Overly long tags  may blow the stack due to a stack-allocated buffer
in the metadata parsing routine, that can reach 3 times the size of
the id3v2 and id3v1 buffers combined.

This patch moves the mp3entry struct used by the Playlist Viewer
off the stack and onto the plugin buffer instead, which helps prevent
a stack overflow in cases such as the example posted in FS#13518.

Future patches to either constrain ID3V2_BUF_SIZE to ~1120 bytes or
to lower the stack usage of metadata parsing will still be required
to fully address the issue.

Change-Id: I2f436195bc8df4d785b1880f6ab167783a162020
2024-11-30 15:45:40 +01:00
android android: Fix configure script for "newer" versions of the NDK 2020-04-13 16:51:58 +02:00
apps Playlist Viewer: Mitigate FS#13518 (stack overflow) 2024-11-30 15:45:40 +01:00
backdrops New port: Shanling Q1 native 2021-07-13 22:01:33 +01:00
bootloader ipod6g: Move pmu_is_hibernated() from bootloader to PMU driver, misc fixes 2024-11-26 20:15:25 -05:00
debian Prepare new maemo release 2013-03-10 12:12:38 +01:00
docs voice: Add Spanish (Mexican) to the nightly voice sets. 2024-11-20 20:46:09 -05:00
firmware strcasestr smaller function for PREFER_SIZE_OVER_SPEED 2024-11-28 15:07:55 -05:00
fonts FS#9059: Add WenQangYi Unibt font (William Poetra Yoga Hadisoeseno) 2024-10-27 22:04:54 -04:00
gdb Nuke the never-functional iriver ifp-7xx port 2021-04-26 07:42:58 -04:00
icons Revert Non-Alpha Updated 8x8 tango icons 2020-10-25 16:21:58 +00:00
lib skin engine small cleanup optimize find_tag() remove string copy 2024-11-25 12:40:36 -05:00
manual erosqnative: hw4 support 2024-11-22 17:01:39 -05:00
packaging Prepare unofficial pandora release 2013-03-10 14:09:30 +01:00
tools build: Allow LTO to work globally, not just codecs/plugins 2024-11-24 08:23:38 -05:00
uisimulator SDL: Migrate to SDL2 2024-10-06 12:05:53 -04:00
utils Merge s5l8700.h and s5l8702.h into s5l87xx.h 2024-11-24 15:56:23 +02:00
wps Add more space for Time Elapsed/Remaining on Rocker WPS 2022-11-15 09:23:37 -05:00
.gitattributes Add a gitattributes file for the migration. 2011-12-01 14:14:59 +00:00
.gitignore Update .gitignore 2024-05-05 14:19:22 -04:00
.gitreview misc: Add a .gitreview file for better gerrit integration 2021-06-24 07:22:19 -04:00

               __________               __   ___.
     Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
     Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
     Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
     Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
                       \/            \/     \/    \/            \/

Build Your Own Rockbox

1. Clone 'rockbox' from git (or extract a downloaded archive).

   $ git clone git://git.rockbox.org/rockbox

     or

   $ tar xJf rockbox.tar.xz

2. Create a build directory, preferably in the same directory as the firmware/
   and apps/ directories. This is where all generated files will be written.

   $ cd rockbox
   $ mkdir build
   $ cd build

3. Make sure you have mips/m68k/arm-elf-gcc and siblings in the PATH. Make sure
   that you have 'perl' in your PATH too. Your gcc cross compiler needs to be
   a particular version depending on what player you are compiling for. These
   can be generated using the rockboxdev.sh script in the /tools/ folder of the
   source.

   $ which arm-elf-eabi-gcc
   $ which perl

4. In your build directory, run the 'tools/configure' script and enter what
   target you want to build for and if you want a debug version or not (and a
   few more questions). It'll prompt you. The debug version is for making a
   gdb version out of it. It is only useful if you run gdb towards your target
   Archos.

   $ ../tools/configure

5. *ploink*. Now you have got a Makefile generated for you.

6. Run 'make' and soon the necessary pieces from the firmware and the apps
   directories have been compiled, linked and scrambled for you.

   $ make
   $ make zip

7. unzip the rockbox.zip on your music player, reboot it and
   *smile*.

If you want to build for more than one target, just create several build
directories and create a setup for each target:

   $ mkdir build-fuzeplus
   $ cd build-fuzeplus
   $ ../tools/configure

   $ mkdir build-xduoox3
   $ cd build-xduoox3
   $ ../tools/configure

Questions anyone? Ask on the mailing list or on IRC. We'll be happy to help you!