Merge "init: fix memory leaks"
am: a73ba879b1
Change-Id: I3375372ddc23b7440edab0107ff1cbe34d550865
This commit is contained in:
commit
1700a162d5
2 changed files with 16 additions and 8 deletions
|
|
@ -111,13 +111,18 @@ int add_dev_perms(const char *name, const char *attr,
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
node->dp.name = strdup(name);
|
node->dp.name = strdup(name);
|
||||||
if (!node->dp.name)
|
if (!node->dp.name) {
|
||||||
|
free(node);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
if (attr) {
|
if (attr) {
|
||||||
node->dp.attr = strdup(attr);
|
node->dp.attr = strdup(attr);
|
||||||
if (!node->dp.attr)
|
if (!node->dp.attr) {
|
||||||
|
free(node->dp.name);
|
||||||
|
free(node);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
node->dp.perm = perm;
|
node->dp.perm = perm;
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,6 @@ void set_device_permission(int nargs, char **args)
|
||||||
int prefix = 0;
|
int prefix = 0;
|
||||||
int wildcard = 0;
|
int wildcard = 0;
|
||||||
char *endptr;
|
char *endptr;
|
||||||
char *tmp = 0;
|
|
||||||
|
|
||||||
if (nargs == 0)
|
if (nargs == 0)
|
||||||
return;
|
return;
|
||||||
|
|
@ -129,14 +128,12 @@ void set_device_permission(int nargs, char **args)
|
||||||
perm = strtol(args[1], &endptr, 8);
|
perm = strtol(args[1], &endptr, 8);
|
||||||
if (!endptr || *endptr != '\0') {
|
if (!endptr || *endptr != '\0') {
|
||||||
LOG(ERROR) << "invalid mode '" << args[1] << "'";
|
LOG(ERROR) << "invalid mode '" << args[1] << "'";
|
||||||
free(tmp);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct passwd* pwd = getpwnam(args[2]);
|
struct passwd* pwd = getpwnam(args[2]);
|
||||||
if (!pwd) {
|
if (!pwd) {
|
||||||
LOG(ERROR) << "invalid uid '" << args[2] << "'";
|
LOG(ERROR) << "invalid uid '" << args[2] << "'";
|
||||||
free(tmp);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
uid = pwd->pw_uid;
|
uid = pwd->pw_uid;
|
||||||
|
|
@ -144,11 +141,17 @@ void set_device_permission(int nargs, char **args)
|
||||||
struct group* grp = getgrnam(args[3]);
|
struct group* grp = getgrnam(args[3]);
|
||||||
if (!grp) {
|
if (!grp) {
|
||||||
LOG(ERROR) << "invalid gid '" << args[3] << "'";
|
LOG(ERROR) << "invalid gid '" << args[3] << "'";
|
||||||
free(tmp);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
gid = grp->gr_gid;
|
gid = grp->gr_gid;
|
||||||
|
|
||||||
add_dev_perms(name, attr, perm, uid, gid, prefix, wildcard);
|
if (add_dev_perms(name, attr, perm, uid, gid, prefix, wildcard) != 0) {
|
||||||
free(tmp);
|
PLOG(ERROR) << "add_dev_perms(name=" << name <<
|
||||||
|
", attr=" << attr <<
|
||||||
|
", perm=" << std::oct << perm << std::dec <<
|
||||||
|
", uid=" << uid << ", gid=" << gid <<
|
||||||
|
", prefix=" << prefix << ", wildcard=" << wildcard <<
|
||||||
|
")";
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue