1. 09 Aug, 2017 1 commit
  2. 18 Jun, 2017 2 commits
  3. 29 Mar, 2017 1 commit
    • Filip Roséen's avatar
      playlist: fix deadlock on destruction while preparser adds items to playlist · befb82c2
      Filip Roséen authored
      As we can have incoming requests to the preparser while we are
      destroying libvlc, we can end up in a deadlock while we are removing
      all playlist_item_t from the playlist, while an item being preparsed
      tries to add additional items to the list.
      
      These changes fixes the issue by introducing a preparser-deactivation
      function, that will make sure that we:
      
       1) clear out any pending preparsing requests
       2) cancel the current item preparsing (blocking)
       3) prevent further requests to the preparser
      
      fixes: #18151
      Signed-off-by: default avatarHugo Beauzée-Luyssen <hugo@beauzee.fr>
      befb82c2
  4. 06 Feb, 2017 1 commit
    • Rémi Denis-Courmont's avatar
      libvlc: fix NULL dereference · b0ac3e5c
      Rémi Denis-Courmont authored
      The vlc_custom_create() macro assumes that the first parameter is a
      valid pointer by way of the VLC_OBJECT() macro. So call the
      vlc_custom_create() function instead.
      b0ac3e5c
  5. 20 Sep, 2016 1 commit
  6. 16 Jun, 2016 1 commit
    • Rémi Denis-Courmont's avatar
      Revert "libvlc: delete preparser before interfaces" · 17bd88b9
      Rémi Denis-Courmont authored
      This reverts commit 9e9b2274.
      
      The preparser must obviously outlive the playlist (and thus interfaces).
      This fixes use after free:
      
      ERROR: AddressSanitizer: heap-use-after-free on address 0x611000005548 at pc 0x7fad5e11bffa bp 0x7fad50daac10 sp 0x7fad50daac08
      READ of size 8 at 0x611000005548 thread T1
          #0 0x7fad5e11bff9 in playlist_preparser_fetcher_Push ../../src/playlist/preparser.c:128
          #1 0x7fad5e0e7640 in libvlc_ArtRequest ../../src/libvlc.c:648
          #2 0x7fad5e10ad37 in PlayItem ../../src/playlist/thread.c:232
          #3 0x7fad5e10d167 in Next ../../src/playlist/thread.c:478
          #4 0x7fad5e10d448 in Thread ../../src/playlist/thread.c:501
          #5 0x7fad5fba3463 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x7463)
          #6 0x7fad5f6dce5c in clone (/lib/x86_64-linux-gnu/libc.so.6+0xe8e5c)
      
      0x611000005548 is located 8 bytes inside of 208-byte region [0x611000005540,0x611000005610)
      freed by thread T0 here:
          #0 0x7fad60ea69d0 in free (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc19d0)
          #1 0x7fad5e11cf8f in playlist_preparser_Delete ../../src/playlist/preparser.c:184
          #2 0x7fad5e0e6b53 in libvlc_InternalCleanup ../../src/libvlc.c:512
          #3 0x7fad60b2ed14 in libvlc_release ../../lib/core.c:105
          #4 0x4024da in main ../../bin/vlc.c:275
          #5 0x7fad5f6145ef in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x205ef)
      
      previously allocated by thread T0 here:
          #0 0x7fad60ea6ce8 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc1ce8)
          #1 0x7fad5e11b3cd in playlist_preparser_New ../../src/playlist/preparser.c:74
          #2 0x7fad5e0e62a2 in libvlc_InternalInit ../../src/libvlc.c:374
          #3 0x7fad60b2e6d3 in libvlc_new ../../lib/core.c:59
          #4 0x4022dd in main ../../bin/vlc.c:228
          #5 0x7fad5f6145ef in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x205ef)
      
      Thread T1 created by T0 here:
          #0 0x7fad60e15f19 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.3+0x30f19)
          #1 0x7fad5e30d9f6 in vlc_clone_attr ../../src/posix/thread.c:484
          #2 0x7fad5e30dbd8 in vlc_clone ../../src/posix/thread.c:496
          #3 0x7fad5e1091a9 in playlist_Activate ../../src/playlist/thread.c:54
          #4 0x7fad5e1117a0 in playlist_Create ../../src/playlist/engine.c:299
          #5 0x7fad5e106139 in intf_GetPlaylist ../../src/interface/interface.c:149
          #6 0x7fad5e1061d9 in intf_InsertItem ../../src/interface/interface.c:165
          #7 0x7fad5e0e72f7 in GetFilenames ../../src/libvlc.c:605
          #8 0x7fad5e0e6979 in libvlc_InternalInit ../../src/libvlc.c:488
          #9 0x7fad60b2e6d3 in libvlc_new ../../lib/core.c:59
          #10 0x4022dd in main ../../bin/vlc.c:228
          #11 0x7fad5f6145ef in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x205ef)
      
      SUMMARY: AddressSanitizer: heap-use-after-free ../../src/playlist/preparser.c:128 in playlist_preparser_fetcher_Push
      17bd88b9
  7. 05 Jun, 2016 4 commits
  8. 02 Jun, 2016 1 commit
  9. 26 Feb, 2016 1 commit
    • Thomas Guillem's avatar
      keystore: add a unique memory keystore · 965f5075
      Thomas Guillem authored
      This keystore is used to store credentials on memory if no others keystore is
      found or if the user doesn't want to store them permanently. This keystore is
      owned by libvlc and is shared with all vlc objects. It's released when the
      libvlc instance is released.
      965f5075
  10. 19 Feb, 2016 2 commits
  11. 18 Feb, 2016 1 commit
  12. 04 Feb, 2016 4 commits
    • Thomas Guillem's avatar
      input: add a META_REQUEST flag to force user interaction · fb7313e0
      Thomas Guillem authored
      It this flag is set, user interaction will be forced when preparsing the item
      given by libvlc_MetaRequest (there won't be user interactions for sub items).
      fb7313e0
    • Thomas Guillem's avatar
      dialog: remove old API · 2f79c80a
      Thomas Guillem authored
      2f79c80a
    • Thomas Guillem's avatar
      dialog: add new dialog API · c50d31d8
      Thomas Guillem authored
      - vlc_dialog_wait_question will replace dialog_Question
      
      - vlc_dialog_wait_question with i_type == VLC_DIALOG_QUESTION_CRITICAL and
        without action1/action2 will replace dialog_FatalWait
      
      - vlc_dialog_wait_login will replace dialog_Login
      
      - vlc_dialog_display_progress will replace dialog_Progress
      
      - dialog_Fatal is replaced by vlc_dialog_display_error
      
      - vlc_dialog_display_error will replace dialog_Fatal
      
      - vlc_ext_dialog_update will repalace dialog_ExtensionUpdate
      
      - vlc_dialog_wait_question and vlc_dialog_wait_login are interruptible via
        vlc_interrupt.
      
      - Nothing prevents to have more than one dialog type displayed at a time.
      c50d31d8
    • Thomas Guillem's avatar
      dialog: rename dialog_provider · 9d1b941b
      Thomas Guillem authored
      It'll will be replaced by the new dialog API
      9d1b941b
  13. 21 Nov, 2015 1 commit
  14. 26 Mar, 2015 1 commit
  15. 08 Feb, 2015 4 commits
  16. 07 Feb, 2015 1 commit
  17. 19 May, 2014 1 commit
  18. 14 May, 2014 1 commit
  19. 07 Jan, 2014 4 commits
  20. 01 Jan, 2014 3 commits
  21. 31 Dec, 2013 2 commits
  22. 29 Dec, 2013 1 commit
  23. 13 Dec, 2013 1 commit