summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2014-09-15 14:18:17 +0200
committerJakub Hrozek <jhrozek@redhat.com>2014-09-25 10:37:29 +0200
commitc0070aa587ada9e50dd79ce46d2d70be8e382f88 (patch)
tree8e5acf8c3e9cc57c4e9ea11c380c8dd6ecb5ac82
parent8d47f715ca63388f2dcbcdf3f2ccdb44e7d47b93 (diff)
downloadsssd-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.c7
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;
}