Fix a memory leak on malloc() error in sudo_ldap_role_to_priv().
Coverity CID 188804
This commit is contained in:
@@ -410,23 +410,23 @@ sudo_ldap_role_to_priv(const char *cn, void *hosts, void *runasusers,
|
|||||||
#ifdef HAVE_SELINUX
|
#ifdef HAVE_SELINUX
|
||||||
} else if (strcmp(var, "role") == 0 && val != NULL) {
|
} else if (strcmp(var, "role") == 0 && val != NULL) {
|
||||||
if ((cmndspec->role = strdup(val)) == NULL)
|
if ((cmndspec->role = strdup(val)) == NULL)
|
||||||
goto oom;
|
break;
|
||||||
} else if (strcmp(var, "type") == 0 && val != NULL) {
|
} else if (strcmp(var, "type") == 0 && val != NULL) {
|
||||||
if ((cmndspec->type = strdup(val)) == NULL)
|
if ((cmndspec->type = strdup(val)) == NULL)
|
||||||
goto oom;
|
break;
|
||||||
#endif /* HAVE_SELINUX */
|
#endif /* HAVE_SELINUX */
|
||||||
#ifdef HAVE_PRIV_SET
|
#ifdef HAVE_PRIV_SET
|
||||||
} else if (strcmp(var, "privs") == 0 && val != NULL) {
|
} else if (strcmp(var, "privs") == 0 && val != NULL) {
|
||||||
if ((cmndspec->privs = strdup(val)) == NULL)
|
if ((cmndspec->privs = strdup(val)) == NULL)
|
||||||
goto oom;
|
break;
|
||||||
} else if (strcmp(var, "limitprivs") == 0 && val != NULL) {
|
} else if (strcmp(var, "limitprivs") == 0 && val != NULL) {
|
||||||
if ((cmndspec->limitprivs = strdup(val)) == NULL)
|
if ((cmndspec->limitprivs = strdup(val)) == NULL)
|
||||||
goto oom;
|
break;
|
||||||
#endif /* HAVE_PRIV_SET */
|
#endif /* HAVE_PRIV_SET */
|
||||||
} else if (store_options) {
|
} else if (store_options) {
|
||||||
if (!sudo_ldap_add_default(var, val, op, source,
|
if (!sudo_ldap_add_default(var, val, op, source,
|
||||||
&priv->defaults)) {
|
&priv->defaults)) {
|
||||||
goto oom;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Convert to tags. */
|
/* Convert to tags. */
|
||||||
@@ -446,6 +446,10 @@ sudo_ldap_role_to_priv(const char *cn, void *hosts, void *runasusers,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
rcstr_delref(source);
|
rcstr_delref(source);
|
||||||
|
if (opt != NULL) {
|
||||||
|
/* Defer oom until we drop the ref on source. */
|
||||||
|
goto oom;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* So we can inherit previous values. */
|
/* So we can inherit previous values. */
|
||||||
|
Reference in New Issue
Block a user