]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/mods.c
ITS#8789 avoid unnecessary writes of context entry
[openldap] / servers / slapd / mods.c
index 5c8ee547ff4d4645797ca031c2dadb132e98d9c2..947f07f690d592dd68d5cb643425ffb01e9cf51a 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2015 The OpenLDAP Foundation.
+ * Copyright 1998-2017 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -388,6 +388,7 @@ modify_increment_values(
        char *textbuf, size_t textlen )
 {
        Attribute *a;
+       const char *syn_oid;
 
        a = attr_find( e->e_attrs, mod->sm_desc );
        if( a == NULL ) {
@@ -406,7 +407,8 @@ modify_increment_values(
                }
        }
 
-       if ( !strcmp( a->a_desc->ad_type->sat_syntax_oid, SLAPD_INTEGER_SYNTAX )) {
+       syn_oid = at_syntax( a->a_desc->ad_type );
+       if ( syn_oid && !strcmp( syn_oid, SLAPD_INTEGER_SYNTAX )) {
                int i;
                char str[sizeof(long)*3 + 2]; /* overly long */
                long incr;
@@ -446,7 +448,7 @@ modify_increment_values(
                snprintf( textbuf, textlen,
                        "modify/increment: %s: increment not supported for value syntax %s",
                        mod->sm_desc->ad_cname.bv_val,
-                       a->a_desc->ad_type->sat_syntax_oid );
+                       syn_oid ? syn_oid : "(NULL)" );
                return LDAP_CONSTRAINT_VIOLATION;
        }