aboutsummaryrefslogtreecommitdiff
path: root/debian/patches/1255_nx-X11_RRModeCreate-plug-memory-leak-of-newMode.full.patch
blob: 11b4579f88ccbc2cc53deba8ff9c218352384f60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
commit 0fc419314b3bbafa873207dafa57ce92b4b9e1e1
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sat Jul 14 11:21:15 2012 -0700

    Backport: RRModeCreate: plug memory leak of newModes if AddResource fails

    Reported by parfait 1.0:

    Error: Memory leak (CWE 401)
       Memory leak of pointer 'newModes' allocated with realloc(((char*)modes), ((num_modes + 1) * 8))
            at line 93 of randr/rrmode.c in function 'RRModeCreate'.
              pointer allocated at line 82 with realloc(((char*)modes), ((num_modes + 1) * 8)).
    Error: Memory leak (CWE 401)
       Memory leak of pointer 'newModes' allocated with malloc(8)
            at line 93 of randr/rrmode.c in function 'RRModeCreate'.
              pointer allocated at line 84 with malloc(8).

    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
    Reviewed-by: Keith Packard <keithp@keithp.com>

    Backported from Arctica GH 3.6.x branch.

    v2: backport to nx-libs 3.6.x (Ulrich Sibiller)
    v3: backport to nx-libs 3.5.0.x (Mihai Moldovan)

--- a/nx-X11/programs/Xserver/randr/rrmode.c
+++ b/nx-X11/programs/Xserver/randr/rrmode.c
@@ -98,8 +98,10 @@ RRModeCreate (xRRModeInfo   *modeInfo,
     }
 
     mode->mode.id = FakeClientID(0);
-    if (!AddResource (mode->mode.id, RRModeType, (pointer) mode))
-	return NULL;
+    if (!AddResource(mode->mode.id, RRModeType, (pointer) mode)) {
+        free(newModes);
+        return NULL;
+    }
     modes = newModes;
     modes[num_modes++] = mode;