From 709367d842d0c3c0b79e2fd125398d2147bd226e Mon Sep 17 00:00:00 2001 From: Filippo Carone Date: Fri, 21 Mar 2008 15:03:29 +0100 Subject: [PATCH] fix for #1533: check on array boundaries before removing media --- .../src/test/java/org/videolan/jvlc/MediaListTest.java | 9 ++++++++- src/control/media_list.c | 7 ++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/bindings/java/core/src/test/java/org/videolan/jvlc/MediaListTest.java b/bindings/java/core/src/test/java/org/videolan/jvlc/MediaListTest.java index b5cb23684f..35cd1a9776 100644 --- a/bindings/java/core/src/test/java/org/videolan/jvlc/MediaListTest.java +++ b/bindings/java/core/src/test/java/org/videolan/jvlc/MediaListTest.java @@ -99,7 +99,14 @@ public class MediaListTest mlist.addMediaDescriptor(new MediaDescriptor(jvlc, mrl)); mlist.removeMedia(new MediaDescriptor(jvlc, mrl)); Assert.assertEquals(0, mlist.itemsCount()); - + } + + @Test + public void mediaListRemoveNonExistingMedia() + { + MediaList mlist = new MediaList(jvlc); + boolean result = mlist.removeMedia(3); + Assert.assertFalse(result); } diff --git a/src/control/media_list.c b/src/control/media_list.c index a88ed8c479..4286fb9422 100644 --- a/src/control/media_list.c +++ b/src/control/media_list.c @@ -397,10 +397,15 @@ void _libvlc_media_list_remove_index( libvlc_media_list_t * p_mlist, int index, libvlc_exception_t * p_e ) { - VLC_UNUSED(p_e); libvlc_media_descriptor_t * p_md; + if( index < 0 || index > vlc_array_count( &p_mlist->items )) + { + libvlc_exception_raise( p_e, "Index out of bounds exception"); + return; + } + p_md = vlc_array_item_at_index( &p_mlist->items, index ); notify_item_deletion( p_mlist, p_md, index, EventWillHappen ); -- 2.39.2