int numbits = 0;
char *ret;
int len;
-
+ char *saveptr;
+
r = SMB_STRDUP(realm);
- if (!r || !*r)
+ if (!r || !*r) {
return r;
+ }
- for (p=r; *p; p++)
- if (strchr(sep, *p))
+ for (p=r; *p; p++) {
+ if (strchr(sep, *p)) {
numbits++;
+ }
+ }
len = (numbits+1)*(strlen(field)+1) + strlen(r) + 1;
ret = (char *)SMB_MALLOC(len);
- if (!ret)
+ if (!ret) {
+ free(r);
return NULL;
+ }
strlcpy(ret,field, len);
- p=strtok(r,sep);
+ p=strtok_r(r, sep, &saveptr);
if (p) {
strlcat(ret, p, len);
- while ((p=strtok(NULL,sep))) {
- char *s;
+ while ((p=strtok_r(NULL, sep, &saveptr)) != NULL) {
+ int retval;
+ char *s = NULL;
if (reverse)
- asprintf(&s, "%s%s,%s", field, p, ret);
+ retval = asprintf(&s, "%s%s,%s", field, p, ret);
else
- asprintf(&s, "%s,%s%s", ret, field, p);
+ retval = asprintf(&s, "%s,%s%s", ret, field, p);
free(ret);
- ret = s;
+ if (retval == -1) {
+ free(r);
+ return NULL;
+ }
+ ret = SMB_STRDUP(s);
+ free(s);
}
}
ads->auth.flags = wrap_flags;
+ /* Start with a page size of 1000 when the connection is new,
+ * we will drop it by half we get a timeout. */
+ ads->config.ldap_page_size = 1000;
+
return ads;
}
void ads_destroy(ADS_STRUCT **ads)
{
if (ads && *ads) {
- BOOL is_mine;
+ bool is_mine;
is_mine = (*ads)->is_mine;
#if HAVE_LDAP