From eccae5d23a5a4e2ee63891196d27cc4938019893 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 4 Feb 2003 23:44:28 +0000 Subject: Mem alloc checks. Jeremy. (This used to be commit 46ea028169426fbcad92d3d5bf786e88be8f5112) --- source3/libads/ads_struct.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'source3/libads/ads_struct.c') 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; } -- cgit