Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.1:Update
systemd.4328
0008-shared-conf-parser-don-t-leak-memory-on-er...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0008-shared-conf-parser-don-t-leak-memory-on-error-in-DEF.patch of Package systemd.4328
Based on 77c10205bb337585c320e91af4b416f2dcc6faba Mon Sep 17 00:00:00 2001 From: Tom Gundersen <teg@jklm.no> Date: Thu, 18 Sep 2014 13:47:00 +0200 Subject: [PATCH] shared: conf-parser - don't leak memory on error in DEFINE_CONFIG_PARSE_ENUMV Found by Coverity. Fixes CID #1237746. --- src/shared/conf-parser.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) --- src/shared/conf-parser.h +++ src/shared/conf-parser.h 2014-09-18 13:14:43.730234764 +0000 @@ -171,7 +171,8 @@ int log_syntax_internal(const char *unit void *data, \ void *userdata) { \ \ - type **enums = data, *xs, x, *ys; \ + type **enums = data, x, *ys; \ + _cleanup_free_ type *xs = NULL; \ char *w, *state; \ size_t l, i = 0; \ \ @@ -187,6 +188,7 @@ int log_syntax_internal(const char *unit \ FOREACH_WORD(w, l, rvalue, state) { \ _cleanup_free_ char *en = NULL; \ + type *new_xs; \ \ en = strndup(w, l); \ if (!en) \ @@ -212,8 +214,10 @@ int log_syntax_internal(const char *unit continue; \ \ *(xs + i) = x; \ - xs = realloc(xs, (++i + 1) * sizeof(type)); \ - if (!xs) \ + new_xs = realloc(xs, (++i + 1) * sizeof(type)); \ + if (new_xs) \ + xs = new_xs; \ + else \ return -ENOMEM; \ \ *(xs + i) = invalid; \ @@ -221,5 +225,7 @@ int log_syntax_internal(const char *unit \ free(*enums); \ *enums = xs; \ + xs = NULL; \ + \ return 0; \ }
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