libcli/auth: add more const to spnego_negTokenInit->mechTypes
authorStefan Metzmacher <metze@samba.org>
Mon, 5 Aug 2013 08:46:47 +0000 (10:46 +0200)
committerStefan Metzmacher <metze@samba.org>
Sat, 10 Aug 2013 09:11:53 +0000 (11:11 +0200)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Stefan Metzmacher <metze@samba.org>
Autobuild-Date(master): Sat Aug 10 11:11:54 CEST 2013 on sn-devel-104

libcli/auth/spnego.h
libcli/auth/spnego_parse.c
libcli/auth/spnego_proto.h
source3/utils/ntlm_auth.c

index 9a93f2ed522ab8041f83e7cd2152bd005daffbde..539b90336f0b3a2997bbf6ad5ec551153a1b4e2c 100644 (file)
@@ -49,7 +49,7 @@ enum spnego_negResult {
 };
 
 struct spnego_negTokenInit {
-       const char **mechTypes;
+       const char * const *mechTypes;
        DATA_BLOB reqFlags;
        uint8_t reqFlagsPadding;
        DATA_BLOB mechToken;
index 2c73613e3b179f36c40247edce5735545af08186..b1ca07d6376169dfb79a843888237efe6e5fa50d 100644 (file)
@@ -42,12 +42,14 @@ static bool read_negTokenInit(struct asn1_data *asn1, TALLOC_CTX *mem_ctx,
 
                switch (context) {
                /* Read mechTypes */
-               case ASN1_CONTEXT(0):
+               case ASN1_CONTEXT(0): {
+                       const char **mechTypes;
+
                        asn1_start_tag(asn1, ASN1_CONTEXT(0));
                        asn1_start_tag(asn1, ASN1_SEQUENCE(0));
 
-                       token->mechTypes = talloc(mem_ctx, const char *);
-                       if (token->mechTypes == NULL) {
+                       mechTypes = talloc(mem_ctx, const char *);
+                       if (mechTypes == NULL) {
                                asn1->has_error = true;
                                return false;
                        }
@@ -56,22 +58,25 @@ static bool read_negTokenInit(struct asn1_data *asn1, TALLOC_CTX *mem_ctx,
                                char *oid;
                                const char **p;
                                p = talloc_realloc(mem_ctx,
-                                                  token->mechTypes,
+                                                  mechTypes,
                                                   const char *, i+2);
                                if (p == NULL) {
-                                       TALLOC_FREE(token->mechTypes);
+                                       talloc_free(mechTypes);
                                        asn1->has_error = true;
                                        return false;
                                }
-                               token->mechTypes = p;
-                               asn1_read_OID(asn1, token->mechTypes, &oid);
-                               token->mechTypes[i] = oid;
+                               mechTypes = p;
+
+                               asn1_read_OID(asn1, mechTypes, &oid);
+                               mechTypes[i] = oid;
                        }
-                       token->mechTypes[i] = NULL;
+                       mechTypes[i] = NULL;
+                       token->mechTypes = mechTypes;
 
                        asn1_end_tag(asn1);
                        asn1_end_tag(asn1);
                        break;
+               }
                /* Read reqFlags */
                case ASN1_CONTEXT(1):
                        asn1_start_tag(asn1, ASN1_CONTEXT(1));
@@ -366,7 +371,7 @@ bool spnego_free_data(struct spnego_data *spnego)
        switch(spnego->type) {
        case SPNEGO_NEG_TOKEN_INIT:
                if (spnego->negTokenInit.mechTypes) {
-                       talloc_free(spnego->negTokenInit.mechTypes);
+                       talloc_free(discard_const(spnego->negTokenInit.mechTypes));
                }
                data_blob_free(&spnego->negTokenInit.reqFlags);
                data_blob_free(&spnego->negTokenInit.mechToken);
@@ -390,7 +395,7 @@ out:
 }
 
 bool spnego_write_mech_types(TALLOC_CTX *mem_ctx,
-                            const char **mech_types,
+                            const char * const *mech_types,
                             DATA_BLOB *blob)
 {
        struct asn1_data *asn1 = asn1_init(mem_ctx);
index 5fd5e59c65ad95b806f6c188fd57ed8407d5b012..c0fa93468d6b5120409574d8c20f6eb8484558fb 100644 (file)
@@ -24,5 +24,5 @@ ssize_t spnego_read_data(TALLOC_CTX *mem_ctx, DATA_BLOB data, struct spnego_data
 ssize_t spnego_write_data(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, struct spnego_data *spnego);
 bool spnego_free_data(struct spnego_data *spnego);
 bool spnego_write_mech_types(TALLOC_CTX *mem_ctx,
-                            const char **mech_types,
+                            const char * const *mech_types,
                             DATA_BLOB *blob);
index 751f49cdc29d7ddb9f408aa5c4234678aa276199..8d556298ca22f90c9817e753534d51e8f90177f3 100644 (file)
@@ -2054,7 +2054,7 @@ static void manage_gss_spnego_client_request(enum stdio_helper_mode stdio_helper
 
                /* The server offers a list of mechanisms */
 
-               const char **mechType = (const char **)spnego.negTokenInit.mechTypes;
+               const char *const *mechType = spnego.negTokenInit.mechTypes;
 
                while (*mechType != NULL) {