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>
This commit is contained in:
parent
910b5b2454
commit
e6733ae91b
|
@ -1792,11 +1792,14 @@ GetFontPath(ClientPtr client, int *count, int *length, unsigned char **result)
|
||||||
fpe = font_path_elements[i];
|
fpe = font_path_elements[i];
|
||||||
len += fpe->name_length + 1;
|
len += fpe->name_length + 1;
|
||||||
}
|
}
|
||||||
font_path_string = (unsigned char *) realloc(font_path_string, len);
|
c = realloc(font_path_string, len);
|
||||||
if (!font_path_string)
|
if (c == NULL) {
|
||||||
|
free(font_path_string);
|
||||||
|
font_path_string = NULL;
|
||||||
return BadAlloc;
|
return BadAlloc;
|
||||||
|
}
|
||||||
|
|
||||||
c = font_path_string;
|
font_path_string = c;
|
||||||
*length = 0;
|
*length = 0;
|
||||||
for (i = 0; i < num_fpes; i++) {
|
for (i = 0; i < num_fpes; i++) {
|
||||||
fpe = font_path_elements[i];
|
fpe = font_path_elements[i];
|
||||||
|
|
Loading…
Reference in New Issue