neutrinoyparser.cpp, tuxboxapi: avoid possible crashes without g_bouquetManager instance

This was observed without physical frontends and in certain
circumstances while using the web interface, e.g. if users are
using bouquet functionalities.


Origin commit data
------------------
Branch: ni/coolstream
Commit: fbc873caf6
Author: Thilo Graf <dbt@novatux.de>
Date: 2022-11-15 (Tue, 15 Nov 2022)



------------------
This commit was generated by Migit
This commit is contained in:
2022-11-15 22:43:21 +01:00
committed by vanhofen
parent 5f251b06bc
commit b5afa1547c
2 changed files with 25 additions and 0 deletions

View File

@@ -1424,6 +1424,9 @@ std::string CControlAPI::_GetBouquetWriteItem(CyhookHandler *hh, CZapitChannel *
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
void CControlAPI::GetBouquetCGI(CyhookHandler *hh) void CControlAPI::GetBouquetCGI(CyhookHandler *hh)
{ {
if (g_bouquetManager == NULL)
return;
TOutType outType = hh->outStart(true /*old mode*/); TOutType outType = hh->outStart(true /*old mode*/);
std::string result = ""; std::string result = "";
@@ -2165,6 +2168,9 @@ void CControlAPI::ReloadNeutrinoSetupCGI(CyhookHandler *hh)
void CControlAPI::ReloadPluginsCGI(CyhookHandler *hh) void CControlAPI::ReloadPluginsCGI(CyhookHandler *hh)
{ {
if (g_Plugins == NULL)
return;
g_Plugins->loadPlugins(); g_Plugins->loadPlugins();
hh->SendOk(); hh->SendOk();
} }

View File

@@ -228,6 +228,9 @@ std::string CNeutrinoYParser::func_get_bouquets_as_dropdown(CyhookHandler *, st
std::string yresult, sel, nr_str, do_show_hidden; std::string yresult, sel, nr_str, do_show_hidden;
int nr=1; int nr=1;
if (g_bouquetManager == NULL)
return "0";
ySplitString(para," ",nr_str, do_show_hidden); ySplitString(para," ",nr_str, do_show_hidden);
if(!nr_str.empty()) if(!nr_str.empty())
nr = atoi(nr_str.c_str()); nr = atoi(nr_str.c_str());
@@ -255,6 +258,9 @@ std::string CNeutrinoYParser::func_get_bouquets_as_dropdown(CyhookHandler *, st
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
std::string CNeutrinoYParser::func_get_bouquets_as_templatelist(CyhookHandler *, std::string para) std::string CNeutrinoYParser::func_get_bouquets_as_templatelist(CyhookHandler *, std::string para)
{ {
if (g_bouquetManager == NULL)
return "";
std::string yresult, ytemplate, do_show_hidden; std::string yresult, ytemplate, do_show_hidden;
ySplitString(para,"~",ytemplate, do_show_hidden); ySplitString(para,"~",ytemplate, do_show_hidden);
@@ -279,6 +285,9 @@ std::string CNeutrinoYParser::func_get_bouquets_as_templatelist(CyhookHandler *
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
std::string CNeutrinoYParser::func_get_actual_bouquet_number(CyhookHandler *, std::string) std::string CNeutrinoYParser::func_get_actual_bouquet_number(CyhookHandler *, std::string)
{ {
if (g_bouquetManager == NULL)
return "0";
int actual=0; int actual=0;
for (int i = 0; i < (int) g_bouquetManager->Bouquets.size(); i++) { for (int i = 0; i < (int) g_bouquetManager->Bouquets.size(); i++) {
if(g_bouquetManager->existsChannelInBouquet(i, CZapit::getInstance()->GetCurrentChannelID())) { if(g_bouquetManager->existsChannelInBouquet(i, CZapit::getInstance()->GetCurrentChannelID())) {
@@ -331,6 +340,10 @@ std::string CNeutrinoYParser::func_get_channels_as_dropdown(CyhookHandler *, st
std::string CNeutrinoYParser::func_get_bouquets_with_epg(CyhookHandler *hh, std::string para) std::string CNeutrinoYParser::func_get_bouquets_with_epg(CyhookHandler *hh, std::string para)
{ {
int BouquetNr = 0; int BouquetNr = 0;
if (g_bouquetManager == NULL)
return "0";
std::string abnumber, tmp,yresult; std::string abnumber, tmp,yresult;
ZapitChannelList channels; ZapitChannelList channels;
//int num; //int num;
@@ -1135,6 +1148,9 @@ std::string CNeutrinoYParser::func_set_timer_form(CyhookHandler *hh, std::strin
hh->ParamList["timer_repeatCount"] = itoa(timer.repeatCount); hh->ParamList["timer_repeatCount"] = itoa(timer.repeatCount);
// program row // program row
if (g_bouquetManager == NULL)
return "";
t_channel_id current_channel = (cmd == "new") ? CZapit::getInstance()->GetCurrentChannelID() : timer.channel_id; t_channel_id current_channel = (cmd == "new") ? CZapit::getInstance()->GetCurrentChannelID() : timer.channel_id;
CBouquetManager::ChannelIterator cit = g_bouquetManager->tvChannelsBegin(); CBouquetManager::ChannelIterator cit = g_bouquetManager->tvChannelsBegin();
for (; !(cit.EndOfChannels()); cit++) { for (; !(cit.EndOfChannels()); cit++) {
@@ -1184,6 +1200,9 @@ std::string CNeutrinoYParser::func_set_timer_form(CyhookHandler *hh, std::strin
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
std::string CNeutrinoYParser::func_bouquet_editor_main(CyhookHandler *hh, std::string para) std::string CNeutrinoYParser::func_bouquet_editor_main(CyhookHandler *hh, std::string para)
{ {
if (g_bouquetManager == NULL)
return "0";
std::string yresult; std::string yresult;
int selected = -1; int selected = -1;
if (hh->ParamList["saved"] == "1") if (hh->ParamList["saved"] == "1")