nsswitch: Update all consumers of strtoul_err(), strtoull_err() to new API
authorSwen Schillig <swen@linux.ibm.com>
Tue, 4 Jun 2019 07:01:02 +0000 (09:01 +0200)
committerRalph Boehme <slow@samba.org>
Sun, 30 Jun 2019 11:32:18 +0000 (11:32 +0000)
Signed-off-by: Swen Schillig <swen@linux.ibm.com>
Reviewed-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Christof Schmitt <cs@samba.org>
nsswitch/libwbclient/wbc_idmap.c
nsswitch/libwbclient/wbc_sid.c
nsswitch/wbinfo.c

index 6af96bd..270a3c3 100644 (file)
@@ -380,15 +380,27 @@ wbcErr wbcCtxSidsToUnixIds(struct wbcContext *ctx,
                switch (p[0]) {
                case 'U':
                        id->type = WBC_ID_TYPE_UID;
-                       id->id.uid = strtoul_err(p+1, &q, 10, &error);
+                       id->id.uid = smb_strtoul(p+1,
+                                                &q,
+                                                10,
+                                                &error,
+                                                SMB_STR_STANDARD);
                        break;
                case 'G':
                        id->type = WBC_ID_TYPE_GID;
-                       id->id.gid = strtoul_err(p+1, &q, 10, &error);
+                       id->id.gid = smb_strtoul(p+1,
+                                                &q,
+                                                10,
+                                                &error,
+                                                SMB_STR_STANDARD);
                        break;
                case 'B':
                        id->type = WBC_ID_TYPE_BOTH;
-                       id->id.uid = strtoul_err(p+1, &q, 10, &error);
+                       id->id.uid = smb_strtoul(p+1,
+                                                &q,
+                                                10,
+                                                &error,
+                                                SMB_STR_STANDARD);
                        break;
                default:
                        id->type = WBC_ID_TYPE_NOT_SPECIFIED;
index 514a7e8..cec7b51 100644 (file)
@@ -122,7 +122,7 @@ wbcErr wbcStringToSid(const char *str,
        /* Get the SID revision number */
 
        p = str+2;
-       x = (uint64_t)strtoul_err(p, &q, 10, &error);
+       x = (uint64_t)smb_strtoul(p, &q, 10, &error, SMB_STR_STANDARD);
        if (x == 0 || x > UINT8_MAX || !q || *q != '-' || error != 0) {
                wbc_status = WBC_ERR_INVALID_SID;
                BAIL_ON_WBC_ERROR(wbc_status);
@@ -135,7 +135,7 @@ wbcErr wbcStringToSid(const char *str,
         * be expressed as a hex value, according to MS-DTYP.
         */
        p = q+1;
-       x = strtoull_err(p, &q, 0, &error);
+       x = smb_strtoull(p, &q, 0, &error, SMB_STR_STANDARD);
        if (!q || *q != '-' || (x & AUTHORITY_MASK) || error != 0) {
                wbc_status = WBC_ERR_INVALID_SID;
                BAIL_ON_WBC_ERROR(wbc_status);
@@ -151,7 +151,7 @@ wbcErr wbcStringToSid(const char *str,
        p = q +1;
        sid->num_auths = 0;
        while (sid->num_auths < WBC_MAXSUBAUTHS) {
-               x = strtoull_err(p, &q, 10, &error);
+               x = smb_strtoull(p, &q, 10, &error, SMB_STR_ALLOW_NO_CONVERSION);
                if (p == q)
                        break;
                if (x > UINT32_MAX || error != 0) {
@@ -389,7 +389,7 @@ wbcErr wbcCtxLookupSids(struct wbcContext *ctx,
 
        p = extra_data;
 
-       num_domains = strtoul_err(p, &q, 10, &error);
+       num_domains = smb_strtoul(p, &q, 10, &error, SMB_STR_STANDARD);
        if (*q != '\n' || error != 0) {
                goto wbc_err_invalid;
        }
@@ -429,7 +429,7 @@ wbcErr wbcCtxLookupSids(struct wbcContext *ctx,
                p = q+1;
        }
 
-       num_names = strtoul_err(p, &q, 10, &error);
+       num_names = smb_strtoul(p, &q, 10, &error, SMB_STR_STANDARD);
        if (*q != '\n' || error != 0) {
                goto wbc_err_invalid;
        }
@@ -449,7 +449,11 @@ wbcErr wbcCtxLookupSids(struct wbcContext *ctx,
 
        for (i=0; i<num_names; i++) {
 
-               names[i].domain_index = strtoul_err(p, &q, 10, &error);
+               names[i].domain_index = smb_strtoul(p,
+                                                   &q,
+                                                   10,
+                                                   &error,
+                                                   SMB_STR_STANDARD);
                if (names[i].domain_index < 0 || error != 0) {
                        goto wbc_err_invalid;
                }
@@ -462,7 +466,7 @@ wbcErr wbcCtxLookupSids(struct wbcContext *ctx,
                }
                p = q+1;
 
-               names[i].type = strtoul_err(p, &q, 10, &error);
+               names[i].type = smb_strtoul(p, &q, 10, &error, SMB_STR_STANDARD);
                if (*q != ' ' || error != 0) {
                        goto wbc_err_invalid;
                }
@@ -585,7 +589,11 @@ wbcErr wbcCtxLookupRids(struct wbcContext *ctx, struct wbcDomainSid *dom_sid,
                        goto done;
                }
 
-               types[i] = (enum wbcSidType)strtoul_err(p, &q, 10, &error);
+               types[i] = (enum wbcSidType)smb_strtoul(p,
+                                                       &q,
+                                                       10,
+                                                       &error,
+                                                       SMB_STR_STANDARD);
 
                if (*q != ' ' || error != 0) {
                        wbc_status = WBC_ERR_INVALID_RESPONSE;
index b8f0453..ae89f87 100644 (file)
@@ -140,7 +140,7 @@ static bool parse_wbinfo_domain_user(const char *domuser, fstring domain,
  * Return true if input was valid, false otherwise. */
 static bool parse_mapping_arg(char *arg, int *id, char **sid)
 {
-       char *tmp, *endptr;
+       char *tmp;
        int error = 0;
 
        if (!arg || !*arg)
@@ -154,9 +154,8 @@ static bool parse_mapping_arg(char *arg, int *id, char **sid)
 
        /* Because atoi() can return 0 on invalid input, which would be a valid
         * UID/GID we must use strtoul() and do error checking */
-       *id = strtoul_err(tmp, &endptr, 10, &error);
-
-       if (endptr[0] != '\0' || error != 0)
+       *id = smb_strtoul(tmp, NULL, 10, &error, SMB_STR_FULL_STR_CONV);
+       if (error != 0)
                return false;
 
        return true;
@@ -1421,7 +1420,7 @@ static bool wbinfo_lookuprids(const char *domain, const char *arg)
                int error = 0;
                uint32_t rid;
 
-               rid = strtoul_err(ridstr, NULL, 10, &error);
+               rid = smb_strtoul(ridstr, NULL, 10, &error, SMB_STR_STANDARD);
                if (error != 0) {
                        d_printf("failed to convert rid\n");
                        goto done;