summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2014-01-28 20:27:50 -0800
committerKeith Packard <keithp@keithp.com>2014-01-29 15:22:19 -0800
commite6733ae91b7be52930f22a87de15fa05819ef948 (patch)
tree1d80e7d186acd0479ebfa3846021d9f92339ffcb
parent910b5b245425f0a866a703303b78768b0de5cb2b (diff)
On realloc failure, free font_path_string instead of leaking it
Flagged by cppcheck 1.62: [dix/dixfonts.c:1792]: (error) Common realloc mistake: 'font_path_string' nulled but not freed upon failure Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--dix/dixfonts.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/dix/dixfonts.c b/dix/dixfonts.c
index 341ca3f95..83d2539c7 100644
--- a/dix/dixfonts.c
+++ b/dix/dixfonts.c
@@ -1792,11 +1792,14 @@ GetFontPath(ClientPtr client, int *count, int *length, unsigned char **result)
fpe = font_path_elements[i];
len += fpe->name_length + 1;
}
- font_path_string = (unsigned char *) realloc(font_path_string, len);
- if (!font_path_string)
+ c = realloc(font_path_string, len);
+ if (c == NULL) {
+ free(font_path_string);
+ font_path_string = NULL;
return BadAlloc;
+ }
- c = font_path_string;
+ font_path_string = c;
*length = 0;
for (i = 0; i < num_fpes; i++) {
fpe = font_path_elements[i];