lib:cmdline: Fix error handling of --use-kerberos=desired|required|off
authorAndreas Schneider <asn@samba.org>
Wed, 22 Jun 2022 06:28:40 +0000 (08:28 +0200)
committerAndreas Schneider <asn@cryptomilk.org>
Wed, 22 Jun 2022 10:53:36 +0000 (10:53 +0000)
Best reviewed with `git show -b`

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15104

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
lib/cmdline/cmdline.c

index 33d0c94e3b1694c9e80db90d06addd6686a26346..707c93cc70a788d2bacc599b91cd02a9f0c90df7 100644 (file)
@@ -904,26 +904,36 @@ static void popt_common_credentials_callback(poptContext popt_ctx,
                        }
                }
                break;
-       case OPT_USE_KERBEROS:
-               if (arg != NULL) {
-                       int32_t use_kerberos =
-                               lpcfg_parse_enum_vals("client use kerberos", arg);
+       case OPT_USE_KERBEROS: {
+               int32_t use_kerberos = INT_MIN;
+               if (arg == NULL) {
+                       fprintf(stderr,
+                               "Failed to parse "
+                               "--use-kerberos=desired|required|off: "
+                               "Missing argument\n");
+                       exit(1);
+               }
 
-                       if (use_kerberos == INT_MIN) {
-                               fprintf(stderr, "Failed to parse --use-kerberos\n");
-                               exit(1);
-                       }
+               use_kerberos = lpcfg_parse_enum_vals("client use kerberos",
+                                                    arg);
+               if (use_kerberos == INT_MIN) {
+                       fprintf(stderr,
+                               "Failed to parse "
+                               "--use-kerberos=desired|required|off: "
+                               "Invalid argument\n");
+                       exit(1);
+               }
 
-                       ok = cli_credentials_set_kerberos_state(creds,
-                                                               use_kerberos,
-                                                               CRED_SPECIFIED);
-                       if (!ok) {
-                               fprintf(stderr,
-                                       "Failed to set Kerberos state to %s!\n", arg);
-                               exit(1);
-                       }
+               ok = cli_credentials_set_kerberos_state(creds,
+                                                       use_kerberos,
+                                                       CRED_SPECIFIED);
+               if (!ok) {
+                       fprintf(stderr,
+                               "Failed to set Kerberos state to %s!\n", arg);
+                       exit(1);
                }
                break;
+       }
        case OPT_USE_KERBEROS_CCACHE:
                if (arg != NULL) {
                        const char *error_string = NULL;