diff options
author | Volker Lendecke <vl@samba.org> | 2013-10-01 23:29:53 +0200 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2013-10-02 00:06:35 +0200 |
commit | d2c892cd2e6b35898208296522ab83042a0ee28c (patch) | |
tree | fdb4d7f2562ac9b321c5b518fe0491a36fae4edb /source3/utils/net_idmap.c | |
parent | 063ec55e13d5ca09533cf2201b250769f7dbe27c (diff) | |
download | samba-d2c892cd2e6b35898208296522ab83042a0ee28c.tar.gz |
net idmap: add utility function parse_uint32()
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
Diffstat (limited to 'source3/utils/net_idmap.c')
-rw-r--r-- | source3/utils/net_idmap.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/source3/utils/net_idmap.c b/source3/utils/net_idmap.c index 55cde381ae6..a6b8592ca08 100644 --- a/source3/utils/net_idmap.c +++ b/source3/utils/net_idmap.c @@ -622,6 +622,30 @@ done: return ret; } +static bool parse_uint32(const char *str, uint32_t *result) +{ + unsigned long val; + char *endptr; + + val = strtoul(str, &endptr, 10); + + if (str == endptr) { + return false; + } + if (*endptr != '\0') { + return false; + } + if ((val == ULONG_MAX) && (errno == ERANGE)) { + return false; + } + if ((val & UINT32_MAX) != val) { + /* overflow */ + return false; + } + *result = val; /* Potential crop */ + return true; +} + static int net_idmap_delete(struct net_context *c, int argc, const char **argv) { struct functable func[] = { |