summaryrefslogtreecommitdiffstats
path: root/src/providers/ldap/sdap_sudo_shared.c
diff options
context:
space:
mode:
authorPavel Březina <pbrezina@redhat.com>2016-01-12 12:02:40 +0100
committerJakub Hrozek <jhrozek@redhat.com>2016-01-19 14:33:46 +0100
commit3ff3bb43ae6509905bbf7fa6540c44cdbbd0f738 (patch)
treedb2fcd77d92890eb1eaebb87e13adcabfd8eb09f /src/providers/ldap/sdap_sudo_shared.c
parentcc7f9b639144183eb4f8bd86e5bed077da7d4e35 (diff)
downloadsssd-3ff3bb43ae6509905bbf7fa6540c44cdbbd0f738.tar.gz
sssd-3ff3bb43ae6509905bbf7fa6540c44cdbbd0f738.tar.xz
sssd-3ff3bb43ae6509905bbf7fa6540c44cdbbd0f738.zip
SUDO: sdap_sudo_set_usn() do not steal usn
This is less error prone. Reviewed-by: Sumit Bose <sbose@redhat.com>
Diffstat (limited to 'src/providers/ldap/sdap_sudo_shared.c')
-rw-r--r--src/providers/ldap/sdap_sudo_shared.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/providers/ldap/sdap_sudo_shared.c b/src/providers/ldap/sdap_sudo_shared.c
index b31d5d27..0885054e 100644
--- a/src/providers/ldap/sdap_sudo_shared.c
+++ b/src/providers/ldap/sdap_sudo_shared.c
@@ -122,10 +122,11 @@ sdap_sudo_ptask_setup_generic(struct be_ctx *be_ctx,
void
sdap_sudo_set_usn(struct sdap_server_opts *srv_opts,
- char *usn)
+ const char *usn)
{
unsigned int usn_number;
char *endptr = NULL;
+ char *newusn;
if (srv_opts == NULL) {
DEBUG(SSSDBG_TRACE_FUNC, "Bug: srv_opts is NULL\n");
@@ -138,8 +139,14 @@ sdap_sudo_set_usn(struct sdap_server_opts *srv_opts,
}
if (sysdb_compare_usn(usn, srv_opts->max_sudo_value) > 0) {
+ newusn = talloc_strdup(srv_opts, usn);
+ if (newusn == NULL) {
+ DEBUG(SSSDBG_CRIT_FAILURE, "talloc_strdup() failed\n");
+ return;
+ }
+
talloc_zfree(srv_opts->max_sudo_value);
- srv_opts->max_sudo_value = talloc_steal(srv_opts, usn);
+ srv_opts->max_sudo_value = newusn;
}
usn_number = strtoul(usn, &endptr, 10);