From be091c2397b6977d5d920278b75745ba3f26188c Mon Sep 17 00:00:00 2001 From: Kacper Kornet Date: Mon, 7 Feb 2011 21:21:43 +0000 Subject: [PATCH] - make Makefiles more verbose - fix libdir in ladspa plugin - fixes for AUD-289, AUDPLUG-320, AUDPLUG-323 Changed files: audacious-plugins-AUD-289.patch -> 1.1 audacious-plugins-AUDPLUG-320.patch -> 1.1 audacious-plugins-AUDPLUG-323.patch -> 1.1 audacious-plugins-libdir.patch -> 1.1 audacious-plugins-verbose_make.patch -> 1.1 audacious-plugins.spec -> 1.66 --- audacious-plugins-AUD-289.patch | 56 +++++++++ audacious-plugins-AUDPLUG-320.patch | 93 +++++++++++++++ audacious-plugins-AUDPLUG-323.patch | 164 +++++++++++++++++++++++++++ audacious-plugins-libdir.patch | 24 ++++ audacious-plugins-verbose_make.patch | 48 ++++++++ audacious-plugins.spec | 10 ++ 6 files changed, 395 insertions(+) create mode 100644 audacious-plugins-AUD-289.patch create mode 100644 audacious-plugins-AUDPLUG-320.patch create mode 100644 audacious-plugins-AUDPLUG-323.patch create mode 100644 audacious-plugins-libdir.patch create mode 100644 audacious-plugins-verbose_make.patch diff --git a/audacious-plugins-AUD-289.patch b/audacious-plugins-AUD-289.patch new file mode 100644 index 0000000..7d8664c --- /dev/null +++ b/audacious-plugins-AUD-289.patch @@ -0,0 +1,56 @@ +diff -Nur audacious-plugins-2.4.3-orig/src/psf/plugin.c audacious-plugins-2.4.3/src/psf/plugin.c +--- audacious-plugins-2.4.3-orig/src/psf/plugin.c 2011-01-12 12:13:26.000000000 +0100 ++++ audacious-plugins-2.4.3/src/psf/plugin.c 2011-01-28 23:47:46.829315597 +0100 +@@ -96,6 +96,7 @@ + return AO_SUCCESS; + } + ++static GStaticMutex mutex = G_STATIC_MUTEX_INIT; + static gint seek = 0; + gboolean stop_flag = FALSE; + +@@ -182,7 +183,6 @@ + } + else + { +- data->output->close_audio(); + break; + } + } +@@ -192,15 +192,17 @@ + while (!stop_flag && data->output->buffer_playing()) + g_usleep(10000); + +- data->output->close_audio(); +- + break; + } + ++ g_static_mutex_lock (& mutex); ++ stop_flag = TRUE; ++ data->output->close_audio (); ++ g_static_mutex_unlock (& mutex); ++ + g_free(buffer); + g_free(path); + +- stop_flag = TRUE; + return ! error; + } + +@@ -232,8 +234,13 @@ + + void psf2_Stop(InputPlayback *playback) + { +- stop_flag = TRUE; +- playback->output->abort_write(); ++ g_static_mutex_lock (& mutex); ++ if (! stop_flag) ++ { ++ stop_flag = TRUE; ++ playback->output->abort_write (); ++ } ++ g_static_mutex_unlock (& mutex); + } + + void psf2_pause(InputPlayback *playback, gshort pause) diff --git a/audacious-plugins-AUDPLUG-320.patch b/audacious-plugins-AUDPLUG-320.patch new file mode 100644 index 0000000..6bb86ff --- /dev/null +++ b/audacious-plugins-AUDPLUG-320.patch @@ -0,0 +1,93 @@ +changeset: 5320:d7f11bf8b7c8 +user: Tony Vroon +date: Sun Jan 23 00:28:36 2011 +0000 +summary: adplug: Two fixes (to protrack & rol) from Michael Schwendt, closes AUDPLUG-320. + +diff -r 9f9d51fa2975 -r d7f11bf8b7c8 src/adplug/core/protrack.cxx +--- a/src/adplug/core/protrack.cxx Fri Jan 21 23:28:39 2011 -0500 ++++ b/src/adplug/core/protrack.cxx Sun Jan 23 00:28:36 2011 +0000 +@@ -266,6 +266,10 @@ + else + track--; + ++ if (track >= npats*nchans) { // prevent overflow ++ songend = 1; ++ return !songend; ++ } + AdPlug_LogWrite ("%3d%3d%2X%2X%2X|", tracks[track][row].note, + tracks[track][row].inst, tracks[track][row].command, + tracks[track][row].param1, tracks[track][row].param2); +diff -r 9f9d51fa2975 -r d7f11bf8b7c8 src/adplug/core/rol.cxx +--- a/src/adplug/core/rol.cxx Fri Jan 21 23:28:39 2011 -0500 ++++ b/src/adplug/core/rol.cxx Sun Jan 23 00:28:36 2011 +0000 +@@ -257,6 +257,9 @@ + TVolumeEvents &vEvents = voiceData.volume_events; + TPitchEvents &pEvents = voiceData.pitch_events; + ++ if (iEvents.empty()) { ++ return; // prevent out-of-bounds access ++ } + if( !(voiceData.mEventStatus & CVoiceData::kES_InstrEnd ) && + iEvents[voiceData.next_instrument_event].time == mCurrTick ) + { +@@ -271,6 +274,9 @@ + } + } + ++ if (vEvents.empty()) { ++ return; // prevent out-of-bounds access ++ } + if( !(voiceData.mEventStatus & CVoiceData::kES_VolumeEnd ) && + vEvents[voiceData.next_volume_event].time == mCurrTick ) + { +@@ -314,6 +320,9 @@ + } + } + ++ if (pEvents.empty()) { ++ return; // prevent out-of-bounds access ++ } + if( !(voiceData.mEventStatus & CVoiceData::kES_PitchEnd ) && + pEvents[voiceData.next_pitch_event].time == mCurrTick ) + { +@@ -454,6 +463,9 @@ + { + int16 const num_tempo_events = f->readInt( 2 ); + ++ if (num_tempo_events<0) { ++ return; ++ } + mTempoEvents.reserve( num_tempo_events ); + + for(int i=0; ireadInt( 2 ); ++ if (number_of_instrument_events<0) { ++ return; ++ } + + TInstrumentEvents &instrument_events = voice.instrument_events; + +@@ -563,6 +578,9 @@ + void CrolPlayer::load_volume_events( binistream *f, CVoiceData &voice ) + { + int16 const number_of_volume_events = f->readInt( 2 ); ++ if (number_of_volume_events<0) { ++ return; ++ } + + TVolumeEvents &volume_events = voice.volume_events; + +@@ -583,6 +601,9 @@ + void CrolPlayer::load_pitch_events( binistream *f, CVoiceData &voice ) + { + int16 const number_of_pitch_events = f->readInt( 2 ); ++ if (number_of_pitch_events<0) { ++ return; ++ } + + TPitchEvents &pitch_events = voice.pitch_events; + + diff --git a/audacious-plugins-AUDPLUG-323.patch b/audacious-plugins-AUDPLUG-323.patch new file mode 100644 index 0000000..1685442 --- /dev/null +++ b/audacious-plugins-AUDPLUG-323.patch @@ -0,0 +1,164 @@ + +# HG changeset patch +# User John Lindgren +# Date 1295406442 18000 +# Node ID b2c94059fb28375515c0ca9b54a5b2f09c333375 +# Parent 3f1ab558c6cf557d226151e941b5113ccd154d73 +mtp_up: Use strrchr instead of rindex; fix potential 0x1 pointer dereference (patch from Carlo Bramini, AUDPLUG-323). + +diff -r 3f1ab558c6cf -r b2c94059fb28 src/mtp_up/filetype.c +--- a/src/mtp_up/filetype.c Tue Jan 18 01:19:25 2011 -0500 ++++ b/src/mtp_up/filetype.c Tue Jan 18 22:07:22 2011 -0500 +@@ -2,84 +2,76 @@ + #include "string.h" + #include "filetype.h" + ++typedef struct { ++ const char *ptype; ++ const LIBMTP_filetype_t filetype; ++} file_entry_t; ++ ++/* This need to be kept constantly updated as new file types arrive. */ ++static const file_entry_t file_entries[] = { ++ { "wav", LIBMTP_FILETYPE_WAV }, ++ { "mp3", LIBMTP_FILETYPE_MP3 }, ++ { "wma", LIBMTP_FILETYPE_WMA }, ++ { "ogg", LIBMTP_FILETYPE_OGG }, ++ { "mp4", LIBMTP_FILETYPE_MP4 }, ++ { "wmv", LIBMTP_FILETYPE_WMV }, ++ { "avi", LIBMTP_FILETYPE_AVI }, ++ { "mpeg", LIBMTP_FILETYPE_MPEG }, ++ { "mpg", LIBMTP_FILETYPE_MPEG }, ++ { "asf", LIBMTP_FILETYPE_ASF }, ++ { "qt", LIBMTP_FILETYPE_QT }, ++ { "mov", LIBMTP_FILETYPE_QT }, ++ { "wma", LIBMTP_FILETYPE_WMA }, ++ { "jpg", LIBMTP_FILETYPE_JPEG }, ++ { "jpeg", LIBMTP_FILETYPE_JPEG }, ++ { "jfif", LIBMTP_FILETYPE_JFIF }, ++ { "tif", LIBMTP_FILETYPE_TIFF }, ++ { "tiff", LIBMTP_FILETYPE_TIFF }, ++ { "bmp", LIBMTP_FILETYPE_BMP }, ++ { "gif", LIBMTP_FILETYPE_GIF }, ++ { "pic", LIBMTP_FILETYPE_PICT }, ++ { "pict", LIBMTP_FILETYPE_PICT }, ++ { "png", LIBMTP_FILETYPE_PNG }, ++ { "wmf", LIBMTP_FILETYPE_WINDOWSIMAGEFORMAT }, ++ { "ics", LIBMTP_FILETYPE_VCALENDAR2 }, ++ { "exe", LIBMTP_FILETYPE_WINEXEC }, ++ { "com", LIBMTP_FILETYPE_WINEXEC }, ++ { "bat", LIBMTP_FILETYPE_WINEXEC }, ++ { "dll", LIBMTP_FILETYPE_WINEXEC }, ++ { "sys", LIBMTP_FILETYPE_WINEXEC }, ++ { "aac", LIBMTP_FILETYPE_AAC }, ++ { "mp2", LIBMTP_FILETYPE_MP2 }, ++ { "flac", LIBMTP_FILETYPE_FLAC }, ++ { "m4a", LIBMTP_FILETYPE_M4A }, ++ { "doc", LIBMTP_FILETYPE_DOC }, ++ { "xml", LIBMTP_FILETYPE_XML }, ++ { "xls", LIBMTP_FILETYPE_XLS }, ++ { "ppt", LIBMTP_FILETYPE_PPT }, ++ { "mht", LIBMTP_FILETYPE_MHT }, ++ { "jp2", LIBMTP_FILETYPE_JP2 }, ++ { "jpx", LIBMTP_FILETYPE_JPX } ++}; ++ + /* Find the file type based on extension */ + LIBMTP_filetype_t + find_filetype (const char * filename) + { +- char *ptype; +- ptype = rindex(filename,'.')+1; +- LIBMTP_filetype_t filetype; +- /* This need to be kept constantly updated as new file types arrive. */ +- if (!strcasecmp (ptype, "wav")) { +- filetype = LIBMTP_FILETYPE_WAV; +- } else if (!strcasecmp (ptype, "mp3")) { +- filetype = LIBMTP_FILETYPE_MP3; +- } else if (!strcasecmp (ptype, "wma")) { +- filetype = LIBMTP_FILETYPE_WMA; +- } else if (!strcasecmp (ptype, "ogg")) { +- filetype = LIBMTP_FILETYPE_OGG; +- } else if (!strcasecmp (ptype, "mp4")) { +- filetype = LIBMTP_FILETYPE_MP4; +- } else if (!strcasecmp (ptype, "wmv")) { +- filetype = LIBMTP_FILETYPE_WMV; +- } else if (!strcasecmp (ptype, "avi")) { +- filetype = LIBMTP_FILETYPE_AVI; +- } else if (!strcasecmp (ptype, "mpeg") || !strcasecmp (ptype, "mpg")) { +- filetype = LIBMTP_FILETYPE_MPEG; +- } else if (!strcasecmp (ptype, "asf")) { +- filetype = LIBMTP_FILETYPE_ASF; +- } else if (!strcasecmp (ptype, "qt") || !strcasecmp (ptype, "mov")) { +- filetype = LIBMTP_FILETYPE_QT; +- } else if (!strcasecmp (ptype, "wma")) { +- filetype = LIBMTP_FILETYPE_WMA; +- } else if (!strcasecmp (ptype, "jpg") || !strcasecmp (ptype, "jpeg")) { +- filetype = LIBMTP_FILETYPE_JPEG; +- } else if (!strcasecmp (ptype, "jfif")) { +- filetype = LIBMTP_FILETYPE_JFIF; +- } else if (!strcasecmp (ptype, "tif") || !strcasecmp (ptype, "tiff")) { +- filetype = LIBMTP_FILETYPE_TIFF; +- } else if (!strcasecmp (ptype, "bmp")) { +- filetype = LIBMTP_FILETYPE_BMP; +- } else if (!strcasecmp (ptype, "gif")) { +- filetype = LIBMTP_FILETYPE_GIF; +- } else if (!strcasecmp (ptype, "pic") || !strcasecmp (ptype, "pict")) { +- filetype = LIBMTP_FILETYPE_PICT; +- } else if (!strcasecmp (ptype, "png")) { +- filetype = LIBMTP_FILETYPE_PNG; +- } else if (!strcasecmp (ptype, "wmf")) { +- filetype = LIBMTP_FILETYPE_WINDOWSIMAGEFORMAT; +- } else if (!strcasecmp (ptype, "ics")) { +- filetype = LIBMTP_FILETYPE_VCALENDAR2; +- } else if (!strcasecmp (ptype, "exe") || !strcasecmp (ptype, "com") || +- !strcasecmp (ptype, "bat") || !strcasecmp (ptype, "dll") || +- !strcasecmp (ptype, "sys")) { +- filetype = LIBMTP_FILETYPE_WINEXEC; +- } else if (!strcasecmp (ptype, "aac")) { +- filetype = LIBMTP_FILETYPE_AAC; +- } else if (!strcasecmp (ptype, "mp2")) { +- filetype = LIBMTP_FILETYPE_MP2; +- } else if (!strcasecmp (ptype, "flac")) { +- filetype = LIBMTP_FILETYPE_FLAC; +- } else if (!strcasecmp (ptype, "m4a")) { +- filetype = LIBMTP_FILETYPE_M4A; +- } else if (!strcasecmp (ptype, "doc")) { +- filetype = LIBMTP_FILETYPE_DOC; +- } else if (!strcasecmp (ptype, "xml")) { +- filetype = LIBMTP_FILETYPE_XML; +- } else if (!strcasecmp (ptype, "xls")) { +- filetype = LIBMTP_FILETYPE_XLS; +- } else if (!strcasecmp (ptype, "ppt")) { +- filetype = LIBMTP_FILETYPE_PPT; +- } else if (!strcasecmp (ptype, "mht")) { +- filetype = LIBMTP_FILETYPE_MHT; +- } else if (!strcasecmp (ptype, "jp2")) { +- filetype = LIBMTP_FILETYPE_JP2; +- } else if (!strcasecmp (ptype, "jpx")) { +- filetype = LIBMTP_FILETYPE_JPX; +- } else { +- /* Tagging as unknown file type */ +- filetype = LIBMTP_FILETYPE_UNKNOWN; +- } +- return filetype; ++ char *ptype = strrchr(filename,'.'); ++ unsigned int n; ++ ++ if (ptype != NULL) ++ { ++ /* Skip '.' char */ ++ ptype++; ++ ++ /* Seach entry in the table */ ++ for (n=0; n