Since I so miserably misspelled packaging - a new thread specific to the issue at hand.

I found a "workaround". In short, xlc does not accept arrays of nested array - the bottom line (best message) is: 1506-995 (S) An aggregate containing a flexible array member cannot be used as a member of a structure or as an array element.

At the core - all the other messages come because this (I shall call it nesting).

For the test-http-auth.c file I have a patch (attached).

make ran for while with no issue, then it started running into several files with this same style of specification - doveadm-dict.c being the first one. I ran "make -i" and I notice several files with this - for xlc - "unaccepted" syntax.

Please look at the patch - what it basically is - and let me know whether you would consider accepting patches in this form (e.g., verify gcc (I assume) will accept it as well). If your answer is yes, I shall proceed with the additional files (learn how your MACROS work!) and send them to you. Again, initially I would just send one, e.g., doveadm-dict.c - to be sure your regular compiler also builds this alternate specification.

Thank you for your consideration!

Michael

--- test-http-auth.c.orig       2016-06-29 20:01:30 +0000
+++ test-http-auth.c.new        2016-10-11 15:54:50 +0000
@@ -9,7 +9,7 @@
 struct http_auth_challenge_test {
        const char *scheme;
        const char *data;
-       struct http_auth_param *params;
+       struct http_auth_param params[];
 };
 
 struct http_auth_challenges_test {
@@ -17,65 +17,69 @@
 
        struct http_auth_challenge_test *challenges;
 };
-
+/* The schemes */
+static const struct http_auth_challenge_test basic[] = {
+       { .scheme = "Basic",
+         .data = NULL,
+         .params = {
+               (struct http_auth_param) { "realm", "WallyWorld" },
+               (struct http_auth_param) { }
+               }
+       },{
+         .scheme = NULL
+       }
+};
+static const struct http_auth_challenge_test digest[] = {
+       { .scheme = "Digest",
+         .data = NULL,
+         .params = (struct http_auth_param []) { 
+               { "realm", "[email protected]" },
+               { "qop", "auth,auth-int" },
+               { "nonce", "dcd98b7102dd2f0e8b11d0f600bfb0c093" },
+               { "opaque", "5ccc069c403ebaf9f0171e9517f40e41" },
+               { }
+         }
+       },{
+         .scheme = NULL
+       }
+};
+static const struct http_auth_challenge_test realms[] = {
+       { .scheme = "Newauth",
+         .data = NULL,
+         .params = (struct http_auth_param []) { 
+               { "realm", "apps" },
+               { "type", "1" },
+               { "title", "Login to \"apps\"" },
+               { }
+         }
+       },{
+         .scheme = "Basic",
+         .data = NULL,
+         .params = (struct http_auth_param []) { 
+               { "realm", "simple" },
+               { }
+        }
+       },{
+         .scheme = NULL
+       }
+};
 /* Valid auth challenges tests */
 static const struct http_auth_challenges_test
 valid_auth_challenges_tests[] = {
        { 
                .challenges_in = "Basic realm=\"WallyWorld\"",
-               .challenges = (struct http_auth_challenge_test []) {
-                       { .scheme = "Basic",
-                               .data = NULL,
-                               .params = (struct http_auth_param []) { 
-                                       { "realm", "WallyWorld" }, { NULL, NULL 
}
-                               }
-                       },{
-                               .scheme = NULL
-                       }
-               }
+               .challenges = &basic
        },{
                .challenges_in = "Digest "
                  "realm=\"[email protected]\", "
                  "qop=\"auth,auth-int\", "
                  "nonce=\"dcd98b7102dd2f0e8b11d0f600bfb0c093\", "
                  "opaque=\"5ccc069c403ebaf9f0171e9517f40e41\"",
-               .challenges = (struct http_auth_challenge_test []) {
-                       { .scheme = "Digest",
-                               .data = NULL,
-                               .params = (struct http_auth_param []) { 
-                                       { "realm", "[email protected]" },
-                                       { "qop", "auth,auth-int" },
-                                       { "nonce", 
"dcd98b7102dd2f0e8b11d0f600bfb0c093" },
-                                       { "opaque", 
"5ccc069c403ebaf9f0171e9517f40e41" },
-                                       { NULL, NULL }
-                               }
-                       },{
-                               .scheme = NULL
-                       }
-               }
+               .challenges = &digest
        },{
                .challenges_in = "Newauth realm=\"apps\", type=1, "
                      "title=\"Login to \\\"apps\\\"\", Basic realm=\"simple\"",
-               .challenges = (struct http_auth_challenge_test []) {
-                       { .scheme = "Newauth",
-                               .data = NULL,
-                               .params = (struct http_auth_param []) { 
-                                       { "realm", "apps" },
-                                       { "type", "1" },
-                                       { "title", "Login to \"apps\"" },
-                                       { NULL, NULL }
-                               }
-                       },{
-                               .scheme = "Basic",
-                               .data = NULL,
-                               .params = (struct http_auth_param []) { 
-                                       { "realm", "simple" },
-                                       { NULL, NULL }
-                               }
-                       },{
-                               .scheme = NULL
-                       }
-               }
+               .challenges = &realms
        }
 };
 
@@ -160,27 +164,18 @@
 
        const char *scheme;
        const char *data;
-       struct http_auth_param *params;
+       struct http_auth_param params[];
 };
-
-/* Valid auth credentials tests */
 static const struct http_auth_credentials_test
-valid_auth_credentials_tests[] = {
-       { 
-               .credentials_in = "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
+basic_cred[] = {
+       {
                .scheme = "Basic",
                .data = "QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
                .params = NULL
-       },{
-               .credentials_in = "Digest username=\"Mufasa\", "
-                 "realm=\"[email protected]\", "
-                 "nonce=\"dcd98b7102dd2f0e8b11d0f600bfb0c093\", "
-                 "uri=\"/dir/index.html\", "
-                 "qop=auth, "
-                 "nc=00000001, "
-                 "cnonce=\"0a4f113b\", "
-                 "response=\"6629fae49393a05397450978507c4ef1\", "
-                 "opaque=\"5ccc069c403ebaf9f0171e9517f40e41\"",
+       }
+};
+static const struct http_auth_credentials_test mufasa[] = {
+       {
                .scheme = "Digest",
                .data = NULL,
                .params = (struct http_auth_param []) {
@@ -198,6 +193,26 @@
        }
 };
 
+/* Valid auth credentials tests */
+static const struct http_auth_credentials_test
+valid_auth_credentials_tests[] = {
+       { 
+               .credentials_in = "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
+               .params = &basic_cred
+       },{
+               .credentials_in = "Digest username=\"Mufasa\", "
+                 "realm=\"[email protected]\", "
+                 "nonce=\"dcd98b7102dd2f0e8b11d0f600bfb0c093\", "
+                 "uri=\"/dir/index.html\", "
+                 "qop=auth, "
+                 "nc=00000001, "
+                 "cnonce=\"0a4f113b\", "
+                 "response=\"6629fae49393a05397450978507c4ef1\", "
+                 "opaque=\"5ccc069c403ebaf9f0171e9517f40e41\"",
+                .params = &mufasa
+               }
+       };
+
 static const unsigned int valid_auth_credentials_test_count =
        N_ELEMENTS(valid_auth_credentials_tests);
 

Reply via email to