diff options
author | Swen Schillig <swen@linux.ibm.com> | 2019-01-30 09:31:34 +0100 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2019-03-01 00:32:11 +0000 |
commit | 2b2ff12e706d999ff2d84affa79c64b33cc289a7 (patch) | |
tree | 781f3790d19f8de0bd27d963bc443eebfe3e4dcd /source4/rpc_server | |
parent | 58e2c1534429c05adb0cf5957d281dca0286fc13 (diff) | |
download | samba-2b2ff12e706d999ff2d84affa79c64b33cc289a7.tar.gz |
source4: Use wrapper for string to integer conversion
In order to detect an value overflow error during
the string to integer conversion with strtoul/strtoull,
the errno variable must be set to zero before the execution and
checked after the conversion is performed. This is achieved by
using the wrapper function strtoul_err and strtoull_err.
Signed-off-by: Swen Schillig <swen@linux.ibm.com>
Reviewed-by: Ralph Böhme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source4/rpc_server')
-rw-r--r-- | source4/rpc_server/lsa/dcesrv_lsa.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/source4/rpc_server/lsa/dcesrv_lsa.c b/source4/rpc_server/lsa/dcesrv_lsa.c index cbbd9f482f2..64d2ec9991a 100644 --- a/source4/rpc_server/lsa/dcesrv_lsa.c +++ b/source4/rpc_server/lsa/dcesrv_lsa.c @@ -1698,6 +1698,7 @@ static NTSTATUS update_uint32_t_value(TALLOC_CTX *mem_ctx, uint32_t orig_uint = 0; unsigned int flags = 0; int ret; + int error = 0; orig_val = ldb_msg_find_ldb_val(orig, attribute); if (!orig_val || !orig_val->data) { @@ -1705,9 +1706,11 @@ static NTSTATUS update_uint32_t_value(TALLOC_CTX *mem_ctx, flags = LDB_FLAG_MOD_ADD; } else { - errno = 0; - orig_uint = strtoul((const char *)orig_val->data, NULL, 0); - if (errno != 0 || orig_uint != value) { + orig_uint = strtoul_err((const char *)orig_val->data, + NULL, + 0, + &error); + if (error != 0 || orig_uint != value) { /* replace also if can't get value */ flags = LDB_FLAG_MOD_REPLACE; } |