mirror of
https://github.com/moparisthebest/pacman
synced 2025-02-28 09:21:53 -05:00
Fix memory leak in shortest_delta_path.
It is possible for the if statement to never succeed, causing path to never be freed. It is also possible for the if statement to succeed more than once per loop, which could have caused a segfault. Signed-off-by: Nathan Jones <nathanj@insightbb.com> Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
9a6582a8fd
commit
b43301428e
@ -168,15 +168,15 @@ static alpm_list_t *shortest_delta_path(alpm_list_t *deltas,
|
||||
|
||||
/* If this vertex has already been visited in the path, go to the
|
||||
* next vertex. */
|
||||
if(alpm_list_find_ptr(path, v))
|
||||
if(alpm_list_find_ptr(path, v)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Once we find a vertex that starts at the 'from' version,
|
||||
* recursively find the shortest path using the 'to' version of this
|
||||
* current vertex as the 'from' version in the function call. */
|
||||
if(strcmp(v->from, from) == 0) {
|
||||
alpm_list_t *newpath = alpm_list_copy(path);
|
||||
alpm_list_free(path);
|
||||
newpath = alpm_list_add(newpath, v);
|
||||
newpath = shortest_delta_path(deltas, v->to, to, newpath);
|
||||
|
||||
@ -195,6 +195,8 @@ static alpm_list_t *shortest_delta_path(alpm_list_t *deltas,
|
||||
}
|
||||
}
|
||||
|
||||
alpm_list_free(path);
|
||||
|
||||
return(shortest);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user