summaryrefslogtreecommitdiff
path: root/source3/libads/ads_struct.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2003-02-04 23:44:28 +0000
committerJeremy Allison <jra@samba.org>2003-02-04 23:44:28 +0000
commiteccae5d23a5a4e2ee63891196d27cc4938019893 (patch)
treed8f050e17bdb5e73976a5b2d9ae80121f0d613da /source3/libads/ads_struct.c
parent41b680fce598d84f855cf25f814d507ede6d71cb (diff)
downloadsamba-eccae5d23a5a4e2ee63891196d27cc4938019893.tar.gz
samba-eccae5d23a5a4e2ee63891196d27cc4938019893.tar.bz2
samba-eccae5d23a5a4e2ee63891196d27cc4938019893.zip
Mem alloc checks.
Jeremy. (This used to be commit 46ea028169426fbcad92d3d5bf786e88be8f5112)
Diffstat (limited to 'source3/libads/ads_struct.c')
-rw-r--r--source3/libads/ads_struct.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/source3/libads/ads_struct.c b/source3/libads/ads_struct.c
index c45805cd16..652bfe31be 100644
--- a/source3/libads/ads_struct.c
+++ b/source3/libads/ads_struct.c
@@ -33,32 +33,34 @@ char *ads_build_path(const char *realm, const char *sep, const char *field, int
r = strdup(realm);
- if (!r || !*r) return r;
+ if (!r || !*r)
+ return r;
- for (p=r; *p; p++) {
- if (strchr(sep, *p)) numbits++;
- }
+ for (p=r; *p; p++)
+ if (strchr(sep, *p))
+ numbits++;
len = (numbits+1)*(strlen(field)+1) + strlen(r) + 1;
ret = malloc(len);
+ if (!ret)
+ return NULL;
+
strlcpy(ret,field, len);
p=strtok(r,sep);
strlcat(ret, p, len);
while ((p=strtok(NULL,sep))) {
char *s;
- if (reverse) {
+ if (reverse)
asprintf(&s, "%s%s,%s", field, p, ret);
- } else {
+ else
asprintf(&s, "%s,%s%s", ret, field, p);
- }
free(ret);
ret = s;
}
free(r);
-
return ret;
}