[Date Prev][Date Next] [Chronological] [Thread] [Top]

Proper Deinit? ldap_unbind_ext: Assertion `( (ld)->ld_options.ldo_valid == 0x2 )' failed



Hey,

What is the proper method for deinitializing an LDAP * context if the binding fails?

Consider the following code:

  ret = ldap_initialize(&ld, buf);
  if (ret) { 
      ERR("ldap_initialize: %s: %s", buf, ldap_err2string(ret));
  }
  ret = ldap_set_option(ld, LDAP_OPT_REFERRALS, LDAP_OPT_OFF);
  if (ret) { 
      ERR("ldap_set_option: %s", ldap_err2string(ret));
  } else {
      ret = ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, &v3);
      if (ret) { 
          ERR("ldap_set_option: %s", ldap_err2string(ret));
      } else {
          if (my_ldap_bind_gssapi(ld, flags) == 0) { 
              return 0;
          }
      }       
  }

  ldap_unbind_ext(lx->ld, NULL, NULL);

If the bind fails, the ldap_unbind_ext function asserts:

  unbind.c:49: ldap_unbind_ext: Assertion `( (ld)->ld_options.ldo_valid == 0x2 )' failed.
  Aborted

What am I doing wrong?

Thanks,
Mike