From 8412a9b6084665807bb253e0bee0a195a513093b Mon Sep 17 00:00:00 2001 From: Jacek Jendrzej Date: Mon, 31 Oct 2016 15:53:29 +0100 Subject: [PATCH 1/2] fix possible segfault and negative height Origin commit data ------------------ Branch: ni/coolstream Commit: https://github.com/neutrino-images/ni-neutrino/commit/b8849d53b5d80aabf868e5b8f79c6aec257b7177 Author: Jacek Jendrzej Date: 2016-10-31 (Mon, 31 Oct 2016) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- src/driver/colorgradient.cpp | 5 +++++ src/driver/framebuffer.cpp | 5 ++++- src/gui/components/cc_frm_scrollbar.cpp | 4 ++++ src/gui/infoviewer.cpp | 3 +++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/driver/colorgradient.cpp b/src/driver/colorgradient.cpp index ee8e91150..e41087365 100644 --- a/src/driver/colorgradient.cpp +++ b/src/driver/colorgradient.cpp @@ -62,6 +62,9 @@ uint8_t CColorGradient::limitChar(int c) fb_pixel_t* CColorGradient::gradientColorToTransparent(fb_pixel_t col, fb_pixel_t *gradientBuf, int bSize, int /*mode*/, int /*intensity*/) { + if (bSize < 1) + return gradientBuf; + if (gradientBuf == NULL) { gradientBuf = (fb_pixel_t*) malloc(bSize * sizeof(fb_pixel_t)); if (gradientBuf == NULL) { @@ -94,6 +97,8 @@ fb_pixel_t* CColorGradient::gradientColorToTransparent(fb_pixel_t col, fb_pixel_ fb_pixel_t* CColorGradient::gradientOneColor(fb_pixel_t col, fb_pixel_t *gradientBuf, int bSize, int mode, int intensity, uint8_t v_min, uint8_t v_max, uint8_t s) { + if (bSize < 1) + return gradientBuf; if (gradientBuf == NULL) { gradientBuf = (fb_pixel_t*) malloc(bSize * sizeof(fb_pixel_t)); diff --git a/src/driver/framebuffer.cpp b/src/driver/framebuffer.cpp index 526e27371..aba573365 100644 --- a/src/driver/framebuffer.cpp +++ b/src/driver/framebuffer.cpp @@ -676,7 +676,7 @@ fb_pixel_t* CFrameBuffer::paintBoxRel2Buf(const int dx, const int dy, const int { if (!getActive()) return buf; - if (dx == 0 || dy == 0) { + if (dx < 1 || dy < 1) { dprintf(DEBUG_INFO, "[CFrameBuffer] [%s - %d]: radius %d, dx %d dy %d\n", __func__, __LINE__, radius, dx, dy); return buf; } @@ -2026,6 +2026,9 @@ void CFrameBuffer::blit2FB(void *fbbuff, uint32_t width, uint32_t height, uint32 void CFrameBuffer::blitBox2FB(const fb_pixel_t* boxBuf, uint32_t width, uint32_t height, uint32_t xoff, uint32_t yoff) { + if(width <1 || height <1 || !boxBuf ) + return; + uint32_t xc = (width > xRes) ? (uint32_t)xRes : width; uint32_t yc = (height > yRes) ? (uint32_t)yRes : height; diff --git a/src/gui/components/cc_frm_scrollbar.cpp b/src/gui/components/cc_frm_scrollbar.cpp index 953892245..e64607553 100644 --- a/src/gui/components/cc_frm_scrollbar.cpp +++ b/src/gui/components/cc_frm_scrollbar.cpp @@ -136,6 +136,8 @@ void CComponentsScrollBar::initSegments() //calculate height of segment container int h_seg_obj = height - 2*sb_up_obj->getHeight() - 3*append_y_offset; + if(h_seg_obj < 0) + h_seg_obj = 0; //init segment container if (sb_segments_obj == NULL){ @@ -154,6 +156,8 @@ void CComponentsScrollBar::initSegments() //set y position of 1st segment and set height of segments int y_seg = 1+ append_y_offset; int h_seg = sb_segments_obj->getHeight()/sb_segments_count - append_y_offset; + if(h_seg < 0) + h_seg = 0; //create and add segments to segment container for(u_int8_t i=0; iinitBBOffset(); if (!zap_mode) h_body += infoViewerBB->bottom_bar_offset; From 36927c16144564fbe6f8fc8e2f1fd81290bf688f Mon Sep 17 00:00:00 2001 From: Jacek Jendrzej Date: Mon, 31 Oct 2016 18:23:17 +0100 Subject: [PATCH 2/2] src/gui/scan_setup.cpp fix preselected transponder item Origin commit data ------------------ Branch: ni/coolstream Commit: https://github.com/neutrino-images/ni-neutrino/commit/6b640cfa7be22787e0ca367b5d5a47510a772b0c Author: Jacek Jendrzej Date: 2016-10-31 (Mon, 31 Oct 2016) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- src/gui/scan_setup.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/scan_setup.cpp b/src/gui/scan_setup.cpp index 5ad95d794..a4aa2599b 100644 --- a/src/gui/scan_setup.cpp +++ b/src/gui/scan_setup.cpp @@ -1963,7 +1963,7 @@ int CTPSelectHandler::exec(CMenuTarget* parent, const std::string &actionkey) if(channel) CServiceManager::getInstance()->GetTransponder(channel->getTransponderId(), ct); - int i = 0; + int i = menu.getItemsCount(); transponder_list_t &select_transponders = CServiceManager::getInstance()->GetSatelliteTransponders(position); for (transponder_list_t::iterator tI = select_transponders.begin(); tI != select_transponders.end(); ++tI) { sprintf(cnt, "%d", i);