|
|
e3ffab |
From f4574e1764e56a3a281bfc0e5aba886c46cadf95 Mon Sep 17 00:00:00 2001
|
|
|
e3ffab |
From: Jan Cholasta <jcholast@redhat.com>
|
|
|
e3ffab |
Date: Wed, 5 Nov 2014 08:50:26 +0000
|
|
|
e3ffab |
Subject: [PATCH] Fix various bugs in ipa-opt-counter and ipa-otp-lasttoken
|
|
|
e3ffab |
|
|
|
e3ffab |
Fixes a wrong sizeof argument and unchecked return values.
|
|
|
e3ffab |
|
|
|
e3ffab |
https://fedorahosted.org/freeipa/ticket/4651
|
|
|
e3ffab |
|
|
|
e3ffab |
Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
|
|
|
e3ffab |
---
|
|
|
e3ffab |
daemons/ipa-slapi-plugins/ipa-otp-counter/berval.c | 2 +-
|
|
|
e3ffab |
.../ipa-slapi-plugins/ipa-otp-counter/ipa_otp_counter.c | 14 +++++++++++---
|
|
|
e3ffab |
.../ipa-otp-lasttoken/ipa_otp_lasttoken.c | 6 +++++-
|
|
|
e3ffab |
3 files changed, 17 insertions(+), 5 deletions(-)
|
|
|
e3ffab |
|
|
|
e3ffab |
diff --git a/daemons/ipa-slapi-plugins/ipa-otp-counter/berval.c b/daemons/ipa-slapi-plugins/ipa-otp-counter/berval.c
|
|
|
e3ffab |
index 884e1a21004c5440f3bbad9da57d43bba8649d5f..a2fe592f07746423b12d9a531d7860615b729afa 100644
|
|
|
e3ffab |
--- a/daemons/ipa-slapi-plugins/ipa-otp-counter/berval.c
|
|
|
e3ffab |
+++ b/daemons/ipa-slapi-plugins/ipa-otp-counter/berval.c
|
|
|
e3ffab |
@@ -48,7 +48,7 @@ berval_new_longlong(long long value)
|
|
|
e3ffab |
{
|
|
|
e3ffab |
struct berval *bv;
|
|
|
e3ffab |
|
|
|
e3ffab |
- bv = (struct berval*) slapi_ch_malloc(sizeof(struct berval*));
|
|
|
e3ffab |
+ bv = (struct berval*) slapi_ch_malloc(sizeof(struct berval));
|
|
|
e3ffab |
bv->bv_val = slapi_ch_smprintf("%lld", value);
|
|
|
e3ffab |
bv->bv_len = strlen(bv->bv_val);
|
|
|
e3ffab |
|
|
|
e3ffab |
diff --git a/daemons/ipa-slapi-plugins/ipa-otp-counter/ipa_otp_counter.c b/daemons/ipa-slapi-plugins/ipa-otp-counter/ipa_otp_counter.c
|
|
|
e3ffab |
index 24ef9e2401d62d7d63b55afb9aa3ba2f41642839..da047d7dc58e27b37ad29c39bde44e33602ab4c5 100644
|
|
|
e3ffab |
--- a/daemons/ipa-slapi-plugins/ipa-otp-counter/ipa_otp_counter.c
|
|
|
e3ffab |
+++ b/daemons/ipa-slapi-plugins/ipa-otp-counter/ipa_otp_counter.c
|
|
|
e3ffab |
@@ -50,6 +50,7 @@
|
|
|
e3ffab |
|
|
|
e3ffab |
#include "berval.h"
|
|
|
e3ffab |
#include "ldapmod.h"
|
|
|
e3ffab |
+#include "util.h"
|
|
|
e3ffab |
|
|
|
e3ffab |
#include <limits.h>
|
|
|
e3ffab |
|
|
|
e3ffab |
@@ -140,6 +141,7 @@ normalize_input(LDAPMod ***mods, const char *attr, long long ctr)
|
|
|
e3ffab |
case LDAP_MOD_REPLACE:
|
|
|
e3ffab |
case LDAP_MOD_INCREMENT:
|
|
|
e3ffab |
e++;
|
|
|
e3ffab |
+ /* fall through */
|
|
|
e3ffab |
default:
|
|
|
e3ffab |
c++;
|
|
|
e3ffab |
}
|
|
|
e3ffab |
@@ -284,8 +286,12 @@ preop_mod(Slapi_PBlock *pb)
|
|
|
e3ffab |
cpre = get_counter(epre, attr);
|
|
|
e3ffab |
|
|
|
e3ffab |
if (repl == 0) {
|
|
|
e3ffab |
- if (normalize_input(&mods, attr, cpre) != 0)
|
|
|
e3ffab |
- slapi_pblock_set(pb, SLAPI_MODIFY_MODS, mods);
|
|
|
e3ffab |
+ if (normalize_input(&mods, attr, cpre) != 0) {
|
|
|
e3ffab |
+ if (slapi_pblock_set(pb, SLAPI_MODIFY_MODS, mods)) {
|
|
|
e3ffab |
+ LOG_FATAL("slapi_pblock_set failed!\n");
|
|
|
e3ffab |
+ goto error;
|
|
|
e3ffab |
+ }
|
|
|
e3ffab |
+ }
|
|
|
e3ffab |
}
|
|
|
e3ffab |
|
|
|
e3ffab |
if (!simulate(mods, attr, cpre, &cpost) && repl == 0) {
|
|
|
e3ffab |
@@ -316,7 +322,9 @@ preop_mod(Slapi_PBlock *pb)
|
|
|
e3ffab |
error:
|
|
|
e3ffab |
rc = LDAP_UNWILLING_TO_PERFORM;
|
|
|
e3ffab |
slapi_send_ldap_result(pb, rc, NULL, msg, 0, NULL);
|
|
|
e3ffab |
- slapi_pblock_set(pb, SLAPI_RESULT_CODE, &rc);
|
|
|
e3ffab |
+ if (slapi_pblock_set(pb, SLAPI_RESULT_CODE, &rc)) {
|
|
|
e3ffab |
+ LOG_FATAL("slapi_pblock_set failed!\n");
|
|
|
e3ffab |
+ }
|
|
|
e3ffab |
|
|
|
e3ffab |
slapi_ch_free_string(&msg;;
|
|
|
e3ffab |
return rc;
|
|
|
e3ffab |
diff --git a/daemons/ipa-slapi-plugins/ipa-otp-lasttoken/ipa_otp_lasttoken.c b/daemons/ipa-slapi-plugins/ipa-otp-lasttoken/ipa_otp_lasttoken.c
|
|
|
e3ffab |
index 94d24ae0f0383c090e1207c6f4552ea29601f26e..d20fca1e705f7406362a3ba2def9ba102bd1622d 100644
|
|
|
e3ffab |
--- a/daemons/ipa-slapi-plugins/ipa-otp-lasttoken/ipa_otp_lasttoken.c
|
|
|
e3ffab |
+++ b/daemons/ipa-slapi-plugins/ipa-otp-lasttoken/ipa_otp_lasttoken.c
|
|
|
e3ffab |
@@ -44,6 +44,8 @@
|
|
|
e3ffab |
#include <libotp.h>
|
|
|
e3ffab |
#include <time.h>
|
|
|
e3ffab |
|
|
|
e3ffab |
+#include "util.h"
|
|
|
e3ffab |
+
|
|
|
e3ffab |
#define PLUGIN_NAME "ipa-otp-lasttoken"
|
|
|
e3ffab |
#define LOG(sev, ...) \
|
|
|
e3ffab |
slapi_log_error(SLAPI_LOG_ ## sev, PLUGIN_NAME, \
|
|
|
e3ffab |
@@ -100,7 +102,9 @@ static inline int
|
|
|
e3ffab |
send_error(Slapi_PBlock *pb, int rc, char *errstr)
|
|
|
e3ffab |
{
|
|
|
e3ffab |
slapi_send_ldap_result(pb, rc, NULL, errstr, 0, NULL);
|
|
|
e3ffab |
- slapi_pblock_set(pb, SLAPI_RESULT_CODE, &rc);
|
|
|
e3ffab |
+ if (slapi_pblock_set(pb, SLAPI_RESULT_CODE, &rc)) {
|
|
|
e3ffab |
+ LOG_FATAL("slapi_pblock_set failed!\n");
|
|
|
e3ffab |
+ }
|
|
|
e3ffab |
return rc;
|
|
|
e3ffab |
}
|
|
|
e3ffab |
|
|
|
e3ffab |
--
|
|
|
e3ffab |
2.1.0
|
|
|
e3ffab |
|