diff --git a/servers/slapd/bconfig.c b/servers/slapd/bconfig.c
index fd57476fda9443c4679b34c37938b2979f4bf29e..79b99d1fec32cde3da176ac389333daf91bf9a7a 100644
--- a/servers/slapd/bconfig.c
+++ b/servers/slapd/bconfig.c
@@ -1149,10 +1149,14 @@ config_generic(ConfigArgs *c) {
 			break;
 
 		case CFG_OC: {
-			CfEntryInfo *ce = c->ca_entry->e_private;
-			/* can't modify the hardcoded schema */
-			if ( ce->ce_parent->ce_type == Cft_Global )
-				return 1;
+			CfEntryInfo *ce;
+			/* Can be NULL when undoing a failed add */
+			if ( c->ca_entry ) {
+				ce = c->ca_entry->e_private;
+				/* can't modify the hardcoded schema */
+				if ( ce->ce_parent->ce_type == Cft_Global )
+					return 1;
+				}
 			}
 			cfn = c->private;
 			if ( c->valx < 0 ) {
@@ -1183,10 +1187,14 @@ config_generic(ConfigArgs *c) {
 			break;
 
 		case CFG_ATTR: {
-			CfEntryInfo *ce = c->ca_entry->e_private;
-			/* can't modify the hardcoded schema */
-			if ( ce->ce_parent->ce_type == Cft_Global )
-				return 1;
+			CfEntryInfo *ce;
+			/* Can be NULL when undoing a failed add */
+			if ( c->ca_entry ) {
+				ce = c->ca_entry->e_private;
+				/* can't modify the hardcoded schema */
+				if ( ce->ce_parent->ce_type == Cft_Global )
+					return 1;
+				}
 			}
 			cfn = c->private;
 			if ( c->valx < 0 ) {