diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2014-09-15 14:18:17 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2014-09-25 10:37:29 +0200 |
commit | c0070aa587ada9e50dd79ce46d2d70be8e382f88 (patch) | |
tree | 8e5acf8c3e9cc57c4e9ea11c380c8dd6ecb5ac82 | |
parent | 8d47f715ca63388f2dcbcdf3f2ccdb44e7d47b93 (diff) | |
download | sssd-c0070aa587ada9e50dd79ce46d2d70be8e382f88.tar.gz sssd-c0070aa587ada9e50dd79ce46d2d70be8e382f88.tar.xz sssd-c0070aa587ada9e50dd79ce46d2d70be8e382f88.zip |
LDAP: Do not clobber return value when multiple controls are returned
We loop over the array of returned controls and set 'ret' based on the
control value. In case multiple controls were returned, the 'ret'
variable might be clobbered with result of a string-to-int conversion.
Reviewed-by: Pavel Reichl <preichl@redhat.com>
-rw-r--r-- | src/providers/ldap/sdap_async_connection.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/providers/ldap/sdap_async_connection.c b/src/providers/ldap/sdap_async_connection.c index af4a2aa63..9019cff9f 100644 --- a/src/providers/ldap/sdap_async_connection.c +++ b/src/providers/ldap/sdap_async_connection.c @@ -851,12 +851,13 @@ static void simple_bind_done(struct sdap_op *op, goto done; } state->ppolicy->expire = strtouint32(nval, NULL, 10); - ret = errno; + lret = errno; talloc_zfree(nval); - if (ret != EOK) { + if (lret != EOK) { DEBUG(SSSDBG_MINOR_FAILURE, "Couldn't convert control response " - "to an integer [%s].\n", strerror(ret)); + "to an integer [%s].\n", strerror(lret)); + ret = ERR_INTERNAL; goto done; } |