Empy or false string conversion (was :fix string to integer conversion)
swen
swen at linux.ibm.com
Wed Apr 10 07:49:46 UTC 2019
Hi Christof
me again...seems like I hit send button too early, sorry.
On Tue, 2019-04-09 at 15:50 -0700, Christof Schmitt via samba-technical
wrote:
> Hi,
>
> i think this mostly looks good and moves at least some of the checks
> in
> a common place. Some comments and questions:
>
>
> lib: Update error check for new string conversion wrapper
>
> This removes these lines:
>
> - if ((unique == 0) && (errno == EINVAL)) {
> - return EINVAL;
> - }
> -
>
> I think this is correct, but it is confusing as it is not tied to the
> previous patch. This seems like a fix for "c9f4b92a61 lib: Use
> wrapper
> for string to integer conversion", which should have already removed
> these lines. It might be helpful to put this change in a separate
> patch to make it clear why these lines are removed.
you are right.
If I seperate out this hunk, I guess I'd need another run from Ralph
and yourself on the modified old and the new patch....arghhh :-)
Sooo ... is it too odd to have it in here ?
If that's what's needed I will do it, but ....
What do you think ?
>
>
> The following patches look good. What do you think? If you decide to
> implement the unit test and the check for '\0', that could either be
> done in an updated patch or a follow-on patch; i am just curious what
> your opinion is here.
Yeah sure, as stated in my previous response, I'd prefer to do that in
follow-on patches.
As for the tests I will start to work on those now and
the "full-conversion" check I'd like to realize via
an addtl. parameter (flag) to be prepared for any future add-ons.
What do you think ?
Cheers Swen
>
> Regards,
>
> Christof
>
>
> On Tue, Mar 19, 2019 at 10:41:50AM +0100, swen via samba-technical
> wrote:
> > Updated commit message and added Ralph's RB. ... I was tempted :-)
> >
> > Second team reviewer please review and push if happy.
> >
> > Thanks in advance for your support.
> >
> > Cheers Swen
> > On Tue, 2019-03-19 at 10:24 +0100, Ralph Böhme wrote:
> > > On Tue, Mar 19, 2019 at 10:15:22AM +0100, swen wrote:
> > > > Updated patch-set as discussed.
> > >
> > > thanks.
> > >
> > > > Started pipeline run at
> > > > https://gitlab.com/samba-team/devel/samba/pipelines/52515071
> > > >
> > > > Please review and push if happy.
> > >
> > > looks good, just one nitpick in the first commit message: it
> > > still
> > > says ENODATA.
> > >
> > > Can you please fix that, then add my reviewed-by tags to all
> > > commits
> > > and
> > > resubmit the patchset for second team review? Thanks!
> > >
> > > -slow
> > >
> > From c957143f1c943abb30bfb850783c5a0b345b748a Mon Sep 17 00:00:00
> > 2001
> > From: Swen Schillig <swen at linux.ibm.com>
> > Date: Wed, 6 Mar 2019 09:03:27 +0100
> > Subject: [PATCH 1/9] lib: modify string conversion wrapper to
> > handle invalid
> > strings
> >
> > The standard string conversion routines convert a "non-number
> > string"
> > to zero and do not flag an error.
> > This is changed now by returning EINVAL if no conversion occured.
> >
> > Signed-off-by: Swen Schillig <swen at linux.ibm.com>
> > Reviewed-by: Ralph Boehme <slow at samba.org>
> > ---
> > lib/util/util.c | 16 ++++++++++++++++
> > 1 file changed, 16 insertions(+)
> >
> > diff --git a/lib/util/util.c b/lib/util/util.c
> > index 19824b550c0..4044dd3a473 100644
> > --- a/lib/util/util.c
> > +++ b/lib/util/util.c
> > @@ -60,6 +60,7 @@
> > * - wrong base
> > * - value overflow
> > * - string with a leading "-" indicating a negative number
> > + * - no conversion due to empty string or not representing a
> > number
> > */
> > unsigned long int
> > strtoul_err(const char *nptr, char **endptr, int base, int *err)
> > @@ -84,6 +85,13 @@ strtoul_err(const char *nptr, char **endptr, int
> > base, int *err)
> > return val;
> > }
> >
> > + /* got an invalid number-string resulting in no conversion */
> > + if (nptr == tmp_endptr) {
> > + *err = EINVAL;
> > + errno = saved_errno;
> > + return val;
> > + }
> > +
> > /* did we convert a negative "number" ? */
> > needle = strchr(nptr, '-');
> > if (needle != NULL && needle < tmp_endptr) {
> > @@ -107,6 +115,7 @@ strtoul_err(const char *nptr, char **endptr,
> > int base, int *err)
> > * - wrong base
> > * - value overflow
> > * - string with a leading "-" indicating a negative number
> > + * - no conversion due to empty string or not representing a
> > number
> > */
> > unsigned long long int
> > strtoull_err(const char *nptr, char **endptr, int base, int *err)
> > @@ -131,6 +140,13 @@ strtoull_err(const char *nptr, char **endptr,
> > int base, int *err)
> > return val;
> > }
> >
> > + /* got an invalid number-string resulting in no conversion */
> > + if (nptr == tmp_endptr) {
> > + *err = EINVAL;
> > + errno = saved_errno;
> > + return val;
> > + }
> > +
> > /* did we convert a negative "number" ? */
> > needle = strchr(nptr, '-');
> > if (needle != NULL && needle < tmp_endptr) {
> > --
> > 2.20.1
> >
> >
> > From 13a7f3e191853f7f3d127baa6675b40ecad33255 Mon Sep 17 00:00:00
> > 2001
> > From: Swen Schillig <swen at linux.ibm.com>
> > Date: Wed, 6 Mar 2019 09:07:13 +0100
> > Subject: [PATCH 2/9] lib: Update error check for new string
> > conversion wrapper
> >
> > The new string conversion wrappers detect and flag errors
> > which occured during the string to integer conversion.
> > Those modifications required an update of the callees
> > error checks.
> >
> > Signed-off-by: Swen Schillig <swen at linux.ibm.com>
> > Reviewed-by: Ralph Boehme <slow at samba.org>
> > ---
> > source3/lib/interface.c | 2 +-
> > source3/lib/messages_dgm.c | 5 +----
> > source3/lib/util_str.c | 2 +-
> > 3 files changed, 3 insertions(+), 6 deletions(-)
> >
> > diff --git a/source3/lib/interface.c b/source3/lib/interface.c
> > index 342c92a61a2..31066b8b5cc 100644
> > --- a/source3/lib/interface.c
> > +++ b/source3/lib/interface.c
> > @@ -527,7 +527,7 @@ static void interpret_interface(char *token)
> > unsigned long val;
> >
> > val = strtoul_err(p, &endp, 0, &error);
> > - if (p == endp || (endp && *endp != '\0') || error != 0)
> > {
> > + if (error != 0 || *endp != '\0') {
> > DEBUG(2,("interpret_interface: "
> > "can't determine netmask value from
> > %s\n",
> > p));
> > diff --git a/source3/lib/messages_dgm.c
> > b/source3/lib/messages_dgm.c
> > index d73a6ad6a7c..c1059652cf1 100644
> > --- a/source3/lib/messages_dgm.c
> > +++ b/source3/lib/messages_dgm.c
> > @@ -1470,10 +1470,6 @@ static int messaging_dgm_read_unique(int fd,
> > uint64_t *punique)
> > buf[rw_ret] = '\0';
> >
> > unique = strtoull_err(buf, &endptr, 10, &error);
> > - if ((unique == 0) && (errno == EINVAL)) {
> > - return EINVAL;
> > - }
> > -
> > if (error != 0) {
> > return error;
> > }
> > @@ -1481,6 +1477,7 @@ static int messaging_dgm_read_unique(int fd,
> > uint64_t *punique)
> > if (endptr[0] != '\n') {
> > return EINVAL;
> > }
> > +
> > *punique = unique;
> > return 0;
> > }
> > diff --git a/source3/lib/util_str.c b/source3/lib/util_str.c
> > index a0095d23978..1a27227fe41 100644
> > --- a/source3/lib/util_str.c
> > +++ b/source3/lib/util_str.c
> > @@ -859,7 +859,7 @@ uint64_t conv_str_size(const char * str)
> >
> > lval = strtoull_err(str, &end, 10, &error);
> >
> > - if (end == NULL || end == str || error != 0) {
> > + if (error != 0) {
> > return 0;
> > }
> >
> > --
> > 2.20.1
> >
> >
> > From bc2f3834b39c101e5b1b1156f34c6c4017af966f Mon Sep 17 00:00:00
> > 2001
> > From: Swen Schillig <swen at linux.ibm.com>
> > Date: Wed, 6 Mar 2019 09:29:13 +0100
> > Subject: [PATCH 3/9] utils: Update error check for new string
> > conversion
> > wrapper
> >
> > The new string conversion wrappers detect and flag errors
> > which occured during the string to integer conversion.
> > Those modifications required an update of the callees
> > error checks.
> >
> > Signed-off-by: Swen Schillig <swen at linux.ibm.com>
> > Reviewed-by: Ralph Boehme <slow at samba.org>
> > ---
> > source3/utils/net_idmap.c | 10 ++--------
> > source3/utils/net_sam.c | 2 +-
> > source3/utils/pdbedit.c | 5 +----
> > source3/utils/regedit_dialog.c | 8 +++-----
> > 4 files changed, 7 insertions(+), 18 deletions(-)
> >
> > diff --git a/source3/utils/net_idmap.c b/source3/utils/net_idmap.c
> > index f6c9f3a1a3d..d1a6db95921 100644
> > --- a/source3/utils/net_idmap.c
> > +++ b/source3/utils/net_idmap.c
> > @@ -631,16 +631,10 @@ static bool parse_uint32(const char *str,
> > uint32_t *result)
> > int error = 0;
> >
> > val = strtoul_err(str, &endptr, 10, &error);
> > -
> > - if (str == endptr) {
> > - return false;
> > - }
> > - if (*endptr != '\0') {
> > - return false;
> > - }
> > - if (error != 0) {
> > + if (error != 0 || *endptr != '\0') {
> > return false;
> > }
> > +
> > *result = val; /* Potential crop */
> > return true;
> > }
> > diff --git a/source3/utils/net_sam.c b/source3/utils/net_sam.c
> > index fc2a7baacef..164d9408c56 100644
> > --- a/source3/utils/net_sam.c
> > +++ b/source3/utils/net_sam.c
> > @@ -503,7 +503,7 @@ static int net_sam_policy_set(struct
> > net_context *c, int argc, const char **argv
> > else {
> > value = strtoul_err(argv[1], &endptr, 10, &err);
> >
> > - if ((endptr == argv[1]) || (endptr[0] != '\0') || (err
> > != 0)) {
> > + if (err != 0 || *endptr != '\0') {
> > d_printf(_("Unable to set policy \"%s\"!
> > Invalid value "
> > "\"%s\".\n"),
> > account_policy, argv[1]);
> > diff --git a/source3/utils/pdbedit.c b/source3/utils/pdbedit.c
> > index c80d5411b00..462c753217e 100644
> > --- a/source3/utils/pdbedit.c
> > +++ b/source3/utils/pdbedit.c
> > @@ -602,10 +602,7 @@ static int set_user_info(const char *username,
> > const char *fullname,
> > uint32_t num;
> >
> > num = strtoul_err(kickoff_time, &endptr, 10,
> > &error);
> > - if ((endptr == kickoff_time) ||
> > - (endptr[0] != '\0') ||
> > - (error != 0))
> > - {
> > + if (error != 0 || *endptr != '\0') {
> > fprintf(stderr, "Failed to parse
> > kickoff time\n");
> > return -1;
> > }
> > diff --git a/source3/utils/regedit_dialog.c
> > b/source3/utils/regedit_dialog.c
> > index aeea70ac22e..7dd9f0fadea 100644
> > --- a/source3/utils/regedit_dialog.c
> > +++ b/source3/utils/regedit_dialog.c
> > @@ -1029,7 +1029,6 @@ bool dialog_section_text_field_get_int(struct
> > dialog_section *section,
> > bool dialog_section_text_field_get_uint(struct dialog_section
> > *section,
> > unsigned long long *out)
> > {
> > - bool rv;
> > const char *buf;
> > char *endp;
> > int error = 0;
> > @@ -1043,12 +1042,11 @@ bool
> > dialog_section_text_field_get_uint(struct dialog_section *section,
> > return false;
> > }
> > *out = strtoull_err(buf, &endp, 0, &error);
> > - rv = true;
> > - if (endp == buf || endp == NULL || endp[0] != '\0' || error !=
> > 0) {
> > - rv = false;
> > + if (error != 0 || *endp != '\0') {
> > + return false;
> > }
> >
> > - return rv;
> > + return true;
> > }
> >
> > /* hex editor field */
> > --
> > 2.20.1
> >
> >
> > From d30ea4826941edf3127c898da1920c46f35020c5 Mon Sep 17 00:00:00
> > 2001
> > From: Swen Schillig <swen at linux.ibm.com>
> > Date: Wed, 6 Mar 2019 09:34:10 +0100
> > Subject: [PATCH 4/9] modules: Update error check for new string
> > conversion
> > wrapper
> >
> > The new string conversion wrappers detect and flag errors
> > which occured during the string to integer conversion.
> > Those modifications required an update of the callees
> > error checks.
> >
> > Signed-off-by: Swen Schillig <swen at linux.ibm.com>
> > Reviewed-by: Ralph Boehme <slow at samba.org>
> > ---
> > source3/modules/vfs_snapper.c | 5 ++---
> > 1 file changed, 2 insertions(+), 3 deletions(-)
> >
> > diff --git a/source3/modules/vfs_snapper.c
> > b/source3/modules/vfs_snapper.c
> > index 0f52f9e71c5..fdd99a2cca5 100644
> > --- a/source3/modules/vfs_snapper.c
> > +++ b/source3/modules/vfs_snapper.c
> > @@ -1216,7 +1216,6 @@ static NTSTATUS
> > snapper_snap_path_to_id(TALLOC_CTX *mem_ctx,
> > {
> > char *path_dup;
> > char *str_idx;
> > - char *str_end;
> > uint32_t snap_id;
> > int error = 0;
> >
> > @@ -1251,8 +1250,8 @@ static NTSTATUS
> > snapper_snap_path_to_id(TALLOC_CTX *mem_ctx,
> > }
> >
> > str_idx++;
> > - snap_id = strtoul_err(str_idx, &str_end, 10, &error);
> > - if (error != 0 || str_idx == str_end) {
> > + snap_id = strtoul_err(str_idx, NULL, 10, &error);
> > + if (error != 0) {
> > talloc_free(path_dup);
> > return NT_STATUS_INVALID_PARAMETER;
> > }
> > --
> > 2.20.1
> >
> >
> > From bebcd82ad0f2823d10ca8f3344ef748ff833650d Mon Sep 17 00:00:00
> > 2001
> > From: Swen Schillig <swen at linux.ibm.com>
> > Date: Wed, 6 Mar 2019 09:43:53 +0100
> > Subject: [PATCH 5/9] ctdb-protocol: Update error check for new
> > string
> > conversion wrapper
> >
> > The new string conversion wrappers detect and flag errors
> > which occured during the string to integer conversion.
> > Those modifications required an update of the callees
> > error checks.
> >
> > Signed-off-by: Swen Schillig <swen at linux.ibm.com>
> > Reviewed-by: Ralph Boehme <slow at samba.org>
> > ---
> > ctdb/protocol/protocol_util.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/ctdb/protocol/protocol_util.c
> > b/ctdb/protocol/protocol_util.c
> > index 99dbe82404d..1dfa49b9dc2 100644
> > --- a/ctdb/protocol/protocol_util.c
> > +++ b/ctdb/protocol/protocol_util.c
> > @@ -288,7 +288,7 @@ int ctdb_sock_addr_from_string(const char *str,
> > }
> >
> > port = strtoul_err(p+1, &endp, 10, &ret);
> > - if (endp == p+1 || *endp != '\0' || ret != 0) {
> > + if (ret != 0 || *endp != '\0') {
> > /* Empty string or trailing garbage */
> > return EINVAL;
> > }
> > @@ -327,7 +327,7 @@ int ctdb_sock_addr_mask_from_string(const char
> > *str,
> > }
> >
> > m = strtoul_err(p+1, &endp, 10, &ret);
> > - if (endp == p+1 || *endp != '\0' || ret != 0) {
> > + if (ret != 0 || *endp != '\0') {
> > /* Empty string or trailing garbage */
> > return EINVAL;
> > }
> > --
> > 2.20.1
> >
> >
> > From ce644e21dd88115b420ede860c824aeefcd1841e Mon Sep 17 00:00:00
> > 2001
> > From: Swen Schillig <swen at linux.ibm.com>
> > Date: Wed, 6 Mar 2019 09:48:24 +0100
> > Subject: [PATCH 6/9] ctdb-tools: Update error check for new string
> > conversion
> > wrapper
> >
> > The new string conversion wrappers detect and flag errors
> > which occured during the string to integer conversion.
> > Those modifications required an update of the callees
> > error checks.
> >
> > Signed-off-by: Swen Schillig <swen at linux.ibm.com>
> > Reviewed-by: Ralph Boehme <slow at samba.org>
> > ---
> > ctdb/tools/ctdb.c | 5 ++---
> > 1 file changed, 2 insertions(+), 3 deletions(-)
> >
> > diff --git a/ctdb/tools/ctdb.c b/ctdb/tools/ctdb.c
> > index 8140d7337c5..98f1868e8eb 100644
> > --- a/ctdb/tools/ctdb.c
> > +++ b/ctdb/tools/ctdb.c
> > @@ -325,10 +325,9 @@ static bool parse_nodestring(TALLOC_CTX
> > *mem_ctx, struct ctdb_context *ctdb,
> > tok = strtok(ns, ",");
> > while (tok != NULL) {
> > uint32_t pnn;
> > - char *endptr;
> >
> > - pnn = (uint32_t)strtoul_err(tok, &endptr, 0,
> > &error);
> > - if (error != 0 || (pnn == 0 && tok == endptr))
> > {
> > + pnn = (uint32_t)strtoul_err(tok, NULL, 0,
> > &error);
> > + if (error != 0) {
> > fprintf(stderr, "Invalid node %s\n",
> > tok);
> > return false;
> > }
> > --
> > 2.20.1
> >
> >
> > From 49b6a82d61486ab734c79623e1044d0c633105a2 Mon Sep 17 00:00:00
> > 2001
> > From: Swen Schillig <swen at linux.ibm.com>
> > Date: Wed, 6 Mar 2019 10:02:53 +0100
> > Subject: [PATCH 7/9] common-lib: Update error check for new string
> > conversion
> > wrapper
> >
> > The new string conversion wrappers detect and flag errors
> > which occured during the string to integer conversion.
> > Those modifications required an update of the callees
> > error checks.
> >
> > Signed-off-by: Swen Schillig <swen at linux.ibm.com>
> > Reviewed-by: Ralph Boehme <slow at samba.org>
> > ---
> > lib/ldb-samba/ldb_matching_rules.c | 14 ++------------
> > lib/util/access.c | 2 +-
> > lib/util/util_str.c | 4 ++--
> > 3 files changed, 5 insertions(+), 15 deletions(-)
> >
> > diff --git a/lib/ldb-samba/ldb_matching_rules.c b/lib/ldb-
> > samba/ldb_matching_rules.c
> > index 7387c12f10d..0754e7e066b 100644
> > --- a/lib/ldb-samba/ldb_matching_rules.c
> > +++ b/lib/ldb-samba/ldb_matching_rules.c
> > @@ -393,12 +393,7 @@ static int
> > dsdb_match_for_dns_to_tombstone_time(struct ldb_context *ldb,
> > return LDB_ERR_INVALID_ATTRIBUTE_SYNTAX;
> > }
> > tombstone_time = strtoull_err(s, &p, 10, &error);
> > - if (p == NULL ||
> > - p == s ||
> > - *p != '\0' ||
> > - error != 0 ||
> > - tombstone_time == ULLONG_MAX)
> > - {
> > + if (error != 0 || *p != '\0') {
> > DBG_ERR("Invalid timestamp string passed\n");
> > return LDB_ERR_INVALID_ATTRIBUTE_SYNTAX;
> > }
> > @@ -529,12 +524,7 @@ static int dsdb_match_for_expunge(struct
> > ldb_context *ldb,
> > return LDB_ERR_INVALID_ATTRIBUTE_SYNTAX;
> > }
> > tombstone_time = strtoull_err(s, &p, 10, &error);
> > - if (p == NULL ||
> > - p == s ||
> > - *p != '\0' ||
> > - error != 0 ||
> > - tombstone_time == ULLONG_MAX)
> > - {
> > + if (error != 0 || *p != '\0') {
> > return LDB_ERR_INVALID_ATTRIBUTE_SYNTAX;
> > }
> > }
> > diff --git a/lib/util/access.c b/lib/util/access.c
> > index a05a47c15b2..960fe4b066c 100644
> > --- a/lib/util/access.c
> > +++ b/lib/util/access.c
> > @@ -75,7 +75,7 @@ static bool masked_match(const char *tok, const
> > char *slash, const char *s)
> > unsigned long val;
> >
> > val = strtoul_err(slash+1, &endp, 0, &error);
> > - if (slash+1 == endp || (endp && *endp != '\0') || error
> > != 0) {
> > + if (error != 0 || *endp != '\0') {
> > return false;
> > }
> > if (!make_netmask(&ss_mask, &ss_tok, val)) {
> > diff --git a/lib/util/util_str.c b/lib/util/util_str.c
> > index 447919b087b..29a44836bde 100644
> > --- a/lib/util/util_str.c
> > +++ b/lib/util/util_str.c
> > @@ -70,7 +70,7 @@ _PUBLIC_ bool conv_str_size_error(const char *
> > str, uint64_t * val)
> > }
> >
> > lval = strtoull_err(str, &end, 10, &error);
> > - if (end == NULL || end == str || error != 0) {
> > + if (error != 0) {
> > return false;
> > }
> >
> > @@ -112,7 +112,7 @@ _PUBLIC_ bool conv_str_u64(const char * str,
> > uint64_t * val)
> > }
> >
> > lval = strtoull_err(str, &end, 10, &error);
> > - if (end == NULL || *end != '\0' || end == str || error != 0) {
> > + if (error != 0 || *end != '\0') {
> > return false;
> > }
> >
> > --
> > 2.20.1
> >
> >
> > From ca054970247d1383bb8b4e63acc7dd4b6b095575 Mon Sep 17 00:00:00
> > 2001
> > From: Swen Schillig <swen at linux.ibm.com>
> > Date: Wed, 6 Mar 2019 10:06:35 +0100
> > Subject: [PATCH 8/9] libcli: Update error check for new string
> > conversion
> > wrapper
> >
> > The new string conversion wrappers detect and flag errors
> > which occured during the string to integer conversion.
> > Those modifications required an update of the callees
> > error checks.
> >
> > Signed-off-by: Swen Schillig <swen at linux.ibm.com>
> > Reviewed-by: Ralph Boehme <slow at samba.org>
> > ---
> > libcli/security/dom_sid.c | 6 +++---
> > 1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/libcli/security/dom_sid.c b/libcli/security/dom_sid.c
> > index ca7fd874752..ac34a92f19c 100644
> > --- a/libcli/security/dom_sid.c
> > +++ b/libcli/security/dom_sid.c
> > @@ -149,7 +149,7 @@ bool dom_sid_parse_endp(const char
> > *sidstr,struct dom_sid *sidout,
> > }
> >
> > conv = strtoul_err(p, &q, 10, &error);
> > - if (!q || (*q != '-') || conv > UINT8_MAX || error != 0) {
> > + if (error != 0 || (*q != '-') || conv > UINT8_MAX) {
> > goto format_error;
> > }
> > sidout->sid_rev_num = (uint8_t) conv;
> > @@ -161,7 +161,7 @@ bool dom_sid_parse_endp(const char
> > *sidstr,struct dom_sid *sidout,
> >
> > /* get identauth */
> > conv = strtoull_err(q, &q, 0, &error);
> > - if (!q || conv & AUTHORITY_MASK || error != 0) {
> > + if (conv & AUTHORITY_MASK || error != 0) {
> > goto format_error;
> > }
> >
> > @@ -190,7 +190,7 @@ bool dom_sid_parse_endp(const char
> > *sidstr,struct dom_sid *sidout,
> > }
> >
> > conv = strtoull_err(q, &end, 10, &error);
> > - if (end == q || conv > UINT32_MAX || error != 0) {
> > + if (conv > UINT32_MAX || error != 0) {
> > goto format_error;
> > }
> >
> > --
> > 2.20.1
> >
> >
> > From 154437c99a3b19f9747284f8ead8f445e032476c Mon Sep 17 00:00:00
> > 2001
> > From: Swen Schillig <swen at linux.ibm.com>
> > Date: Wed, 6 Mar 2019 10:11:39 +0100
> > Subject: [PATCH 9/9] source4: Update error check for new string
> > conversion
> > wrapper
> >
> > The new string conversion wrappers detect and flag errors
> > which occured during the string to integer conversion.
> > Those modifications required an update of the callees
> > error checks.
> >
> > Signed-off-by: Swen Schillig <swen at linux.ibm.com>
> > Reviewed-by: Ralph Boehme <slow at samba.org>
> > ---
> > source4/dsdb/samdb/ldb_modules/samldb.c | 2 +-
> > source4/lib/socket/interface.c | 2 +-
> > 2 files changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/source4/dsdb/samdb/ldb_modules/samldb.c
> > b/source4/dsdb/samdb/ldb_modules/samldb.c
> > index ae99ebbe9ed..ea6e68b371a 100644
> > --- a/source4/dsdb/samdb/ldb_modules/samldb.c
> > +++ b/source4/dsdb/samdb/ldb_modules/samldb.c
> > @@ -3337,7 +3337,7 @@ static int verify_cidr(const char *cidr)
> > goto error;
> > }
> >
> > - if (*endptr != '\0' || endptr == slash + 1 || error != 0){
> > + if (error != 0 || *endptr != '\0'){
> > DBG_INFO("CIDR mask is not a proper integer: %s\n",
> > cidr);
> > goto error;
> > }
> > diff --git a/source4/lib/socket/interface.c
> > b/source4/lib/socket/interface.c
> > index 494cbd4fdd2..9bf002c2f01 100644
> > --- a/source4/lib/socket/interface.c
> > +++ b/source4/lib/socket/interface.c
> > @@ -228,7 +228,7 @@ static void interpret_interface(TALLOC_CTX
> > *mem_ctx,
> > int error = 0;
> >
> > unsigned long val = strtoul_err(p, &endp, 0, &error);
> > - if (p == endp || (endp && *endp != '\0') || error != 0)
> > {
> > + if (error != 0 || *endp != '\0') {
> > DEBUG(2,("interpret_interface: "
> > "can't determine netmask value from
> > %s\n",
> > p));
> > --
> > 2.20.1
> >
>
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <http://lists.samba.org/pipermail/samba-technical/attachments/20190410/424ca9df/signature.sig>
More information about the samba-technical
mailing list