summaryrefslogtreecommitdiffstats
path: root/daemons
diff options
context:
space:
mode:
authorNathaniel McCallum <npmccallum@redhat.com>2014-09-19 12:17:32 -0400
committerMartin Kosek <mkosek@redhat.com>2014-09-30 08:27:47 +0200
commit35ec0f7e3d9832c9b687bb01561a10e0304dfa74 (patch)
tree756d527ddf5d564215cccf81385798246436e43e /daemons
parentfcce15d0bd0205c4fcd95a4057602da2e29b7bb8 (diff)
downloadfreeipa-35ec0f7e3d9832c9b687bb01561a10e0304dfa74.tar.gz
freeipa-35ec0f7e3d9832c9b687bb01561a10e0304dfa74.tar.xz
freeipa-35ec0f7e3d9832c9b687bb01561a10e0304dfa74.zip
Use stack allocation when writing values during otp auth
Reviewed-By: Thierry Bordaz <tbordaz@redhat.com>
Diffstat (limited to 'daemons')
-rw-r--r--daemons/ipa-slapi-plugins/libotp/libotp.c28
1 files changed, 11 insertions, 17 deletions
diff --git a/daemons/ipa-slapi-plugins/libotp/libotp.c b/daemons/ipa-slapi-plugins/libotp/libotp.c
index 41f9e7b48..870e2415f 100644
--- a/daemons/ipa-slapi-plugins/libotp/libotp.c
+++ b/daemons/ipa-slapi-plugins/libotp/libotp.c
@@ -125,30 +125,26 @@ static const struct berval *entry_attr_get_berval(const Slapi_Entry* e,
}
static bool writeattr(const struct otptoken *token, const char *attr,
- int value)
+ long long val)
{
- Slapi_Value *svals[] = { NULL, NULL };
Slapi_PBlock *pb = NULL;
- Slapi_Mods *mods = NULL;
bool success = false;
+ char value[32];
int ret;
- /* Create the value. */
- svals[0] = slapi_value_new();
- if (slapi_value_set_int(svals[0], value) != 0) {
- slapi_value_free(&svals[0]);
- return false;
- }
+ LDAPMod *mods[] = {
+ &(LDAPMod) {
+ LDAP_MOD_REPLACE, (char *) attr,
+ .mod_values = (char *[]) { value, NULL }
+ },
+ NULL
+ };
- /* Create the mods. */
- mods = slapi_mods_new();
- slapi_mods_add_mod_values(mods, LDAP_MOD_REPLACE, attr, svals);
+ snprintf(value, sizeof(value), "%lld", val);
- /* Perform the modification. */
pb = slapi_pblock_new();
slapi_modify_internal_set_pb(pb, slapi_sdn_get_dn(token->sdn),
- slapi_mods_get_ldapmods_byref(mods),
- NULL, NULL, token->plugin_id, 0);
+ mods, NULL, NULL, token->plugin_id, 0);
if (slapi_modify_internal_pb(pb) != 0)
goto error;
if (slapi_pblock_get(pb, SLAPI_PLUGIN_INTOP_RESULT, &ret) != 0)
@@ -160,9 +156,7 @@ static bool writeattr(const struct otptoken *token, const char *attr,
error:
slapi_pblock_destroy(pb);
- slapi_mods_free(&mods);
return success;
-
}
/**