summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2011-03-07 20:27:30 +0100
committerJeremy Allison <jra@samba.org>2011-04-13 14:13:24 -0700
commit58e26c2589620f04684aed620054fde4cda98969 (patch)
tree404d366d84415fc5177478e4185c91f951a79dde
parentd4c693df98835444d1db242b2723617d2e231c6a (diff)
downloadsamba-58e26c2589620f04684aed620054fde4cda98969.tar.gz
samba-58e26c2589620f04684aed620054fde4cda98969.tar.bz2
samba-58e26c2589620f04684aed620054fde4cda98969.zip
s3: Simplify parse_sidlist
Signed-off-by: Jeremy Allison <jra@samba.org>
-rw-r--r--source3/winbindd/winbindd_getsidaliases.c26
1 files changed, 9 insertions, 17 deletions
diff --git a/source3/winbindd/winbindd_getsidaliases.c b/source3/winbindd/winbindd_getsidaliases.c
index ebaaf4d2df..a90bfb31d4 100644
--- a/source3/winbindd/winbindd_getsidaliases.c
+++ b/source3/winbindd/winbindd_getsidaliases.c
@@ -159,38 +159,30 @@ NTSTATUS winbindd_getsidaliases_recv(struct tevent_req *req,
static bool parse_sidlist(TALLOC_CTX *mem_ctx, const char *sidstr,
struct dom_sid **sids, uint32_t *num_sids)
{
- const char *p, *q;
+ const char *p;
p = sidstr;
if (p == NULL)
return False;
while (p[0] != '\0') {
- fstring tmp;
- size_t sidlen;
struct dom_sid sid;
- q = strchr(p, '\n');
- if (q == NULL) {
- DEBUG(0, ("Got invalid sidstr: %s\n", p));
- return False;
- }
- sidlen = PTR_DIFF(q, p);
- if (sidlen >= sizeof(tmp)-1) {
+ const char *q = NULL;
+
+ if (!dom_sid_parse_endp(p, &sid, &q)) {
+ DEBUG(1, ("Could not parse sid %s\n", p));
return false;
}
- memcpy(tmp, p, sidlen);
- tmp[sidlen] = '\0';
- q += 1;
- if (!string_to_sid(&sid, tmp)) {
- DEBUG(0, ("Could not parse sid %s\n", p));
- return False;
+ if ((q == NULL) || (q[0] != '\n')) {
+ DEBUG(1, ("Got invalid sidstr: %s\n", p));
+ return false;
}
if (!NT_STATUS_IS_OK(add_sid_to_array(mem_ctx, &sid, sids,
num_sids)))
{
return False;
}
- p = q;
+ p = q+1;
}
return True;
}