diff options
author | Jeremy Allison <jra@samba.org> | 2003-02-04 23:44:28 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2003-02-04 23:44:28 +0000 |
commit | eccae5d23a5a4e2ee63891196d27cc4938019893 (patch) | |
tree | d8f050e17bdb5e73976a5b2d9ae80121f0d613da /source3/libads/ads_struct.c | |
parent | 41b680fce598d84f855cf25f814d507ede6d71cb (diff) | |
download | samba-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.c | 18 |
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; } |