Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:Update
pacemaker.3577
pacemaker-pengine-use-after-free-location.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File pacemaker-pengine-use-after-free-location.patch of Package pacemaker.3577
commit 41dd34090e02ac22a5266e47217467ffc2545bb6 Author: Ken Gaillot <kgaillot@redhat.com> Date: Thu Jun 9 13:58:24 2016 -0500 Fix: pengine: avoid use-after-free with location constraint + sets + templates Previously, rsc2node_new() assumed id would be persistent, but when a location constraint involves a resource set referencing a template, unpack_location() will use a copy of the XML and free it afterward. Now, it makes a copy of id, and pe_free_rsc_to_node() will free that copy when appropriate. diff --git a/pengine/pengine.h b/pengine/pengine.h index 671cfe3..5500819 100644 --- a/pengine/pengine.h +++ b/pengine/pengine.h @@ -82,7 +82,7 @@ enum rsc_discover_e { }; struct rsc_to_node_s { - const char *id; + char *id; resource_t *rsc_lh; enum rsc_role_e role_filter; diff --git a/pengine/utils.c b/pengine/utils.c index 7671e04..d84559b 100644 --- a/pengine/utils.c +++ b/pengine/utils.c @@ -51,6 +51,7 @@ pe_free_rsc_to_node(GListPtr constraints) iterator = iterator->next; g_list_free_full(cons->node_list_rh, free); + free(cons->id); free(cons); } if (constraints != NULL) { @@ -75,7 +76,7 @@ rsc2node_new(const char *id, resource_t * rsc, new_con = calloc(1, sizeof(rsc_to_node_t)); if (new_con != NULL) { - new_con->id = id; + new_con->id = strdup(id); new_con->rsc_lh = rsc; new_con->node_list_rh = NULL; new_con->role_filter = RSC_ROLE_UNKNOWN;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor