diff options
author | Alan Coopersmith <alan.coopersmith@oracle.com> | 2012-07-14 11:21:15 -0700 |
---|---|---|
committer | Alan Coopersmith <alan.coopersmith@oracle.com> | 2012-08-06 15:22:53 -0700 |
commit | c7b7abfaa068042e396d19538215402cfbb4f1e4 (patch) | |
tree | d9c24c39e15d5db328ae7a9c4064be9845e5fbc7 | |
parent | 1eb7be863353be2cf3e83738253eb60c5fe49d19 (diff) |
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>
-rw-r--r-- | randr/rrmode.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/randr/rrmode.c b/randr/rrmode.c index 56e5977b5..f5d3f9e54 100644 --- a/randr/rrmode.c +++ b/randr/rrmode.c @@ -89,8 +89,10 @@ RRModeCreate(xRRModeInfo * modeInfo, const char *name, ScreenPtr userScreen) } mode->mode.id = FakeClientID(0); - if (!AddResource(mode->mode.id, RRModeType, (pointer) mode)) + if (!AddResource(mode->mode.id, RRModeType, (pointer) mode)) { + free(newModes); return NULL; + } modes = newModes; modes[num_modes++] = mode; |