summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ldapd/modify.c
diff options
context:
space:
mode:
authormartinh <martinh@openbsd.org>2010-07-06 09:27:05 +0000
committermartinh <martinh@openbsd.org>2010-07-06 09:27:05 +0000
commit1761b1842a03c4234a8e1ee9aeb16794396c9f6f (patch)
tree69be97e9b53865c425b07103489c0b59a3ced7f3 /usr.sbin/ldapd/modify.c
parenttimeout_add -> timeout_add_msec (diff)
downloadwireguard-openbsd-1761b1842a03c4234a8e1ee9aeb16794396c9f6f.tar.xz
wireguard-openbsd-1761b1842a03c4234a8e1ee9aeb16794396c9f6f.zip
Check return code from commit. Incorrectly returned success when commit
failed due to disk full.
Diffstat (limited to 'usr.sbin/ldapd/modify.c')
-rw-r--r--usr.sbin/ldapd/modify.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/usr.sbin/ldapd/modify.c b/usr.sbin/ldapd/modify.c
index cb4ee024349..fd442c494a8 100644
--- a/usr.sbin/ldapd/modify.c
+++ b/usr.sbin/ldapd/modify.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: modify.c,v 1.10 2010/07/05 14:27:06 martinh Exp $ */
+/* $OpenBSD: modify.c,v 1.11 2010/07/06 09:27:05 martinh Exp $ */
/*
* Copyright (c) 2009, 2010 Martin Hedenfalk <martin@bzero.se>
@@ -89,10 +89,8 @@ ldap_delete(struct request *req)
goto done;
}
- if (namespace_del(ns, dn) == 0) {
- namespace_commit(ns);
+ if (namespace_del(ns, dn) == 0 && namespace_commit(ns) == 0)
rc = LDAP_SUCCESS;
- }
done:
btree_cursor_close(cursor);
@@ -212,7 +210,7 @@ fail:
int
ldap_modify(struct request *req)
{
- int rc;
+ int rc = LDAP_OTHER;
char *dn;
long long op;
char *attr;
@@ -323,19 +321,13 @@ ldap_modify(struct request *req)
else
ldap_add_attribute(entry, "modifyTimestamp", set);
- if (namespace_update(ns, dn, entry) == 0)
+ if (namespace_update(ns, dn, entry) == 0 && namespace_commit(ns) == 0)
rc = LDAP_SUCCESS;
else
rc = LDAP_OTHER;
done:
- if (rc == LDAP_SUCCESS)
- namespace_commit(ns);
- else
- namespace_abort(ns);
-
- if (rc >= 0)
- ldap_respond(req, rc);
- return rc;
+ namespace_abort(ns);
+ return ldap_respond(req, rc);
}