diff options
author | Pavel Březina <pbrezina@redhat.com> | 2016-01-12 12:02:40 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2016-01-19 14:33:46 +0100 |
commit | 3ff3bb43ae6509905bbf7fa6540c44cdbbd0f738 (patch) | |
tree | db2fcd77d92890eb1eaebb87e13adcabfd8eb09f /src | |
parent | cc7f9b639144183eb4f8bd86e5bed077da7d4e35 (diff) | |
download | sssd-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')
-rw-r--r-- | src/providers/ldap/sdap_sudo_shared.c | 11 | ||||
-rw-r--r-- | src/providers/ldap/sdap_sudo_shared.h | 2 |
2 files changed, 10 insertions, 3 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); diff --git a/src/providers/ldap/sdap_sudo_shared.h b/src/providers/ldap/sdap_sudo_shared.h index bbc69272..76858d43 100644 --- a/src/providers/ldap/sdap_sudo_shared.h +++ b/src/providers/ldap/sdap_sudo_shared.h @@ -35,6 +35,6 @@ 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); #endif /* _SDAP_SUDO_SHARED_H_ */ |