summaryrefslogtreecommitdiff
path: root/source4/rpc_server
diff options
context:
space:
mode:
authorSwen Schillig <swen@linux.ibm.com>2019-01-30 09:31:34 +0100
committerJeremy Allison <jra@samba.org>2019-03-01 00:32:11 +0000
commit2b2ff12e706d999ff2d84affa79c64b33cc289a7 (patch)
tree781f3790d19f8de0bd27d963bc443eebfe3e4dcd /source4/rpc_server
parent58e2c1534429c05adb0cf5957d281dca0286fc13 (diff)
downloadsamba-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.c9
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;
}