From 0574a55ebd9243cd8d0a5d0ee6161c598f99aef4 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Sat, 10 Aug 2013 11:07:47 -0700 Subject: Avoid memory leak/corruption if realloc fails in XlcDL.c:resolve_object() Previously, if realloc failed to increase the size, we'd still record that we had allocated the larger size, but the pointer to it would be NULL, causing future calls to be broken, and the previous allocation to be lost/leaked. Signed-off-by: Alan Coopersmith Reviewed-by: Matthieu Herrb Backported-to-NX-by: Ulrich Sibiller --- nx-X11/lib/X11/XlcDL.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'nx-X11/lib/X11/XlcDL.c') diff --git a/nx-X11/lib/X11/XlcDL.c b/nx-X11/lib/X11/XlcDL.c index 02860a028..2bef4ac12 100644 --- a/nx-X11/lib/X11/XlcDL.c +++ b/nx-X11/lib/X11/XlcDL.c @@ -207,12 +207,13 @@ resolve_object(char *path, const char *lc_name) } if (lc_count == lc_len) { - lc_len += OBJECT_INC_LEN; - xi18n_objects_list = (XI18NObjectsList) - Xrealloc(xi18n_objects_list, - sizeof(XI18NObjectsListRec) * lc_len); - if (!xi18n_objects_list) + int new_len = lc_len + OBJECT_INC_LEN; + XI18NObjectsListRec *tmp = Xrealloc(xi18n_objects_list, + sizeof(XI18NObjectsListRec) * new_len); + if (tmp == NULL) goto done; + xi18n_objects_list = tmp; + lc_len = new_len; } n = parse_line(p, args, 6); -- cgit v1.2.3