diff options
author | montellese <montellese@xbmc.org> | 2012-12-22 14:21:44 +0100 |
---|---|---|
committer | montellese <montellese@xbmc.org> | 2012-12-30 11:43:52 +0100 |
commit | d1b68fb1a507dd6f23ab5eb3633cf0d543a90b35 (patch) | |
tree | a27d5be41684c6aaaca86dd646841e69dd4834b1 | |
parent | 51e87c7b0c117d55d24064d76af2a4dc0dac68a1 (diff) |
jsonrpc: check pointers before dereferencing in CPlayerOperations::GetItem() (fixes #13853)
-rw-r--r-- | xbmc/interfaces/json-rpc/PlayerOperations.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/xbmc/interfaces/json-rpc/PlayerOperations.cpp b/xbmc/interfaces/json-rpc/PlayerOperations.cpp index dd2abd4cf1..fb2b5e4492 100644 --- a/xbmc/interfaces/json-rpc/PlayerOperations.cpp +++ b/xbmc/interfaces/json-rpc/PlayerOperations.cpp @@ -113,14 +113,16 @@ JSONRPC_STATUS CPlayerOperations::GetItem(const CStdString &method, ITransportLa if (IsPVRChannel()) { CPVRChannelPtr currentChannel; - if (g_PVRManager.GetCurrentChannel(currentChannel)) + if (g_PVRManager.GetCurrentChannel(currentChannel) && currentChannel.get() != NULL) fileItem = CFileItemPtr(new CFileItem(*currentChannel.get())); } else if (player == Video) { if (!CVideoLibrary::FillFileItem(g_application.CurrentFile(), fileItem, parameterObject)) { - fileItem = CFileItemPtr(new CFileItem(*g_infoManager.GetCurrentMovieTag())); + const CVideoInfoTag *currentVideoTag = g_infoManager.GetCurrentMovieTag(); + if (currentVideoTag != NULL) + fileItem = CFileItemPtr(new CFileItem(*currentVideoTag)); fileItem->SetPath(g_application.CurrentFileItem().GetPath()); } } @@ -128,7 +130,9 @@ JSONRPC_STATUS CPlayerOperations::GetItem(const CStdString &method, ITransportLa { if (!CAudioLibrary::FillFileItem(g_application.CurrentFile(), fileItem, parameterObject)) { - fileItem = CFileItemPtr(new CFileItem(*g_infoManager.GetCurrentSongTag())); + const MUSIC_INFO::CMusicInfoTag *currentMusicTag = g_infoManager.GetCurrentSongTag(); + if (currentMusicTag != NULL) + fileItem = CFileItemPtr(new CFileItem(*currentMusicTag)); fileItem->SetPath(g_application.CurrentFileItem().GetPath()); } } |