From e85852672fdc218356e8a8565ba42ed85bed5fb4 Mon Sep 17 00:00:00 2001
From: Klaus Schmidinger <vdr@tvdr.de>
Date: Sun, 20 Feb 2011 17:19:54 +0100
Subject: Fixed reallocating memory in the "pictures" plugin

---
 CONTRIBUTORS                    |  1 +
 HISTORY                         |  2 ++
 PLUGINS/src/pictures/HISTORY    |  4 ++++
 PLUGINS/src/pictures/pictures.c |  4 ++--
 PLUGINS/src/pictures/player.c   | 13 ++++++++++---
 5 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 54c1eafe..88f60ce2 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -2614,6 +2614,7 @@ Eric Valette <eric.valette@free.fr>
 Paul Menzel <paulepanter@users.sourceforge.net>
  for making include paths not be overwritten in the Makefile
  for adding LDFLAGS to the linker calls in the Makefiles
+ for reporting a possible memory leak in the "pictures" plugin
 
 Radek Stastny <dedkus@gmail.com>
  for translating OSD texts to the Czech language
diff --git a/HISTORY b/HISTORY
index 2246d570..db7ae384 100644
--- a/HISTORY
+++ b/HISTORY
@@ -6535,3 +6535,5 @@ Video Disk Recorder Revision History
   implementation of the AlphaBlend() function.
 - Updated the Slovakian language texts (thanks to Milan Hrala).
 - Added Serbian language texts (thanks to Milan Cvijanovic).
+- Fixed reallocating memory in the "pictures" plugin (reported by Paul Menzel, with
+  input from Oliver Endriss).
diff --git a/PLUGINS/src/pictures/HISTORY b/PLUGINS/src/pictures/HISTORY
index d90f3c59..57290bc5 100644
--- a/PLUGINS/src/pictures/HISTORY
+++ b/PLUGINS/src/pictures/HISTORY
@@ -41,3 +41,7 @@ VDR Plugin 'pictures' Revision History
 2010-02-28: Version 0.0.9
 
 - Added Lithuanian language translations (thanks to Valdemaras Pipiras).
+
+2011-02-20: Version 0.1.0
+
+- Fixed reallocating memory (reported by Paul Menzel).
diff --git a/PLUGINS/src/pictures/pictures.c b/PLUGINS/src/pictures/pictures.c
index 6897e239..8a890b1c 100644
--- a/PLUGINS/src/pictures/pictures.c
+++ b/PLUGINS/src/pictures/pictures.c
@@ -3,7 +3,7 @@
  *
  * See the README file for copyright information and how to reach the author.
  *
- * $Id: pictures.c 2.2 2010/02/28 12:49:55 kls Exp $
+ * $Id: pictures.c 2.3 2011/02/20 16:50:01 kls Exp $
  */
 
 #include <getopt.h>
@@ -11,7 +11,7 @@
 #include "menu.h"
 #include "player.h"
 
-static const char *VERSION       = "0.0.9";
+static const char *VERSION       = "0.1.0";
 static const char *DESCRIPTION   = trNOOP("A simple picture viewer");
 static const char *MAINMENUENTRY = trNOOP("Pictures");
 
diff --git a/PLUGINS/src/pictures/player.c b/PLUGINS/src/pictures/player.c
index 8981b600..4b289ac9 100644
--- a/PLUGINS/src/pictures/player.c
+++ b/PLUGINS/src/pictures/player.c
@@ -3,7 +3,7 @@
  *
  * See the README file for copyright information and how to reach the author.
  *
- * $Id: player.c 1.3 2008/02/09 12:13:10 kls Exp $
+ * $Id: player.c 2.1 2011/02/20 17:15:25 kls Exp $
  */
 
 #include "player.h"
@@ -66,8 +66,15 @@ void cPicturePlayer::SetPicture(const char *FileName)
          length = read(f, buffer, size);
          if (length > 0) {
             if (length >= size) {
-               size = size * 3 / 2;
-               buffer = (uchar *)realloc(buffer, size);
+               int NewSize = size * 3 / 2;
+               if (uchar *NewBuffer = (uchar *)realloc(buffer, NewSize)) {
+                  buffer = NewBuffer;
+                  size = NewSize;
+                  }
+               else {
+                  LOG_ERROR_STR("out of memory");
+                  break;
+                  }
                lseek(f, 0, SEEK_SET);
                continue;
                }
-- 
cgit v1.2.3