/* $OpenLDAP$ */
/*
- * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
*/
return -3;
}
-#define LDAP_DC "dc="
-#define LDAP_DCOID "0.9.2342.19200300.100.1.25="
if( rdn[1] == NULL ) {
+ /*
+ * single-valued RDN
+ */
char *dc;
- /* single RDN */
+
+#define LDAP_DC "dc="
+#define LDAP_DCOID "0.9.2342.19200300.100.1.25="
if( strncasecmp( rdn[0],
LDAP_DC, sizeof(LDAP_DC)-1 ) == 0 )
ndomain = LDAP_REALLOC( domain,
( domain == NULL ? 0 : strlen(domain) )
- + strlen(dc) + "." );
+ + strlen(dc) + sizeof(".") );
if( ndomain == NULL ) {
LDAP_FREE( rdn );
return -5;
}
+ if( domain == NULL ) {
+ ndomain[0] = '\0';
+ } else {
+ strcat( ndomain, "." );
+ }
+
strcat( ndomain, dc );
- strcat( ndomain, "." );
domain = ndomain;
continue;
}
}
+ /*
+ * multi-valued RDN or fall thru
+ */
+
LDAP_VFREE( rdn );
LDAP_FREE( domain );
domain = NULL;
}
+ if( domain != NULL && *domain == '\0' ) {
+ LDAP_FREE( domain );
+ domain = NULL;
+ }
+
*domainp = domain;
return 0;
}
LDAP_CONST char *domain,
char **list )
{
-#ifdef HAVE_RES_SEARCH
+#ifdef HAVE_RES_QUERY
char *request;
- char *dn;
char *hostlist = NULL;
int rc, len, cur = 0;
unsigned char reply[1024];
ldap_pvt_thread_mutex_lock(&ldap_int_resolv_mutex);
#endif
- len = res_search(request, C_IN, T_SRV, reply, sizeof(reply));
+ rc = LDAP_UNAVAILABLE;
+ len = res_query(request, C_IN, T_SRV, reply, sizeof(reply));
if (len >= 0) {
unsigned char *p;
char host[1024];
return rc;
#else
return LDAP_NOT_SUPPORTED;
-#endif /* HAVE_RES_SEARCH */
+#endif /* HAVE_RES_QUERY */
}