diff options
-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 55cde381ae..a6b8592ca0 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[] = { |