Add dom_sid_parse_endp
authorVolker Lendecke <vl@samba.org>
Mon, 7 Mar 2011 19:16:13 +0000 (20:16 +0100)
committerJeremy Allison <jra@samba.org>
Wed, 13 Apr 2011 21:13:24 +0000 (14:13 -0700)
This returns a pointer to the first non-parsed character, along the lines of
strtoul for example.

Signed-off-by: Jeremy Allison <jra@samba.org>
libcli/security/dom_sid.c
libcli/security/dom_sid.h

index 809f20ce263d4b3e6c28ad456858b515ff016e69..2f80a36ae1454a438fb5ef8b9b0c89958a075a82 100644 (file)
@@ -118,9 +118,11 @@ int dom_sid_compare_domain(const struct dom_sid *sid1,
 
 /*****************************************************************
  Convert a string to a SID. Returns True on success, False on fail.
+ Return the first character not parsed in endp.
 *****************************************************************/
 
-bool string_to_sid(struct dom_sid *sidout, const char *sidstr)
+bool dom_sid_parse_endp(const char *sidstr,struct dom_sid *sidout,
+                       const char **endp)
 {
        const char *p;
        char *q;
@@ -197,6 +199,9 @@ bool string_to_sid(struct dom_sid *sidout, const char *sidstr)
                }
                q += 1;
        }
+       if (endp != NULL) {
+               *endp = q;
+       }
        return true;
 
 format_error:
@@ -204,9 +209,14 @@ format_error:
        return false;
 }
 
+bool string_to_sid(struct dom_sid *sidout, const char *sidstr)
+{
+       return dom_sid_parse(sidstr, sidout);
+}
+
 bool dom_sid_parse(const char *sidstr, struct dom_sid *ret)
 {
-       return string_to_sid(ret, sidstr);
+       return dom_sid_parse_endp(sidstr, ret, NULL);
 }
 
 /*
index 3493fab83864c426a029e9e6739cd275caa09513..04571c21decc1191ace6cf2ddc3994ce3bb14f8e 100644 (file)
@@ -60,6 +60,8 @@ int dom_sid_compare_domain(const struct dom_sid *sid1,
 bool dom_sid_equal(const struct dom_sid *sid1, const struct dom_sid *sid2);
 bool sid_append_rid(struct dom_sid *sid, uint32_t rid);
 bool string_to_sid(struct dom_sid *sidout, const char *sidstr);
+bool dom_sid_parse_endp(const char *sidstr,struct dom_sid *sidout,
+                       const char **endp);
 bool dom_sid_parse(const char *sidstr, struct dom_sid *ret);
 struct dom_sid *dom_sid_parse_talloc(TALLOC_CTX *mem_ctx, const char *sidstr);
 struct dom_sid *dom_sid_parse_length(TALLOC_CTX *mem_ctx, const DATA_BLOB *sid);