diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2015-09-10 13:20:21 +0200 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2015-09-10 13:20:21 +0200 |
commit | 0f18bd0a6a9ce0e62fc9bcbc4339f63eee2855fc (patch) | |
tree | c9b41dae329b8caa5a7d01d069844d0cfc489685 /tools.c | |
parent | 14f97d0f2a84aaca2b13638db406e629ceb4785f (diff) | |
download | vdr-0f18bd0a6a9ce0e62fc9bcbc4339f63eee2855fc.tar.gz vdr-0f18bd0a6a9ce0e62fc9bcbc4339f63eee2855fc.tar.bz2 |
Fixed a possible stack overflow in cListBase::Sort()
Diffstat (limited to 'tools.c')
-rw-r--r-- | tools.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.c 4.3 2015/09/06 10:47:05 kls Exp $ + * $Id: tools.c 4.4 2015/09/10 13:17:55 kls Exp $ */ #include "tools.h" @@ -2253,7 +2253,9 @@ static int CompareListObjects(const void *a, const void *b) void cListBase::Sort(void) { int n = Count(); - cListObject *a[n]; + cListObject **a = MALLOC(cListObject *, n); + if (a == NULL) + return; cListObject *object = objects; int i = 0; while (object && i < n) { @@ -2267,6 +2269,7 @@ void cListBase::Sort(void) count--; Add(a[i]); } + free(a); } // --- cHashBase ------------------------------------------------------------- |