diff options
author | Jeremy Allison <jra@samba.org> | 2003-02-04 23:44:05 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2003-02-04 23:44:05 +0000 |
commit | 0701e642f2d78ff572f7d7dcdf9b5c59750c6c30 (patch) | |
tree | fe1f80898ffcae98c2e9c7bac686278a42a96c61 /source3/libads/ads_struct.c | |
parent | bfcdd6eed3d3e9dca7ef45793562703a951ead25 (diff) | |
download | samba-0701e642f2d78ff572f7d7dcdf9b5c59750c6c30.tar.gz samba-0701e642f2d78ff572f7d7dcdf9b5c59750c6c30.tar.bz2 samba-0701e642f2d78ff572f7d7dcdf9b5c59750c6c30.zip |
Mem alloc failure checks.
Jeremy.
(This used to be commit 4e33e3f37fd548b9b1ed3c84f673a853b0dc4818)
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; } |