mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Bad return values for ipa-rmkeytab command
ipa-rmkeytab returns success even when the realm passed to the program is not found in a keytab. This patch adds an explanatory error message and returns error code 5 - Principal or realm not found. https://fedorahosted.org/freeipa/ticket/694
This commit is contained in:
parent
af6d3347ba
commit
e90120bdcb
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#define _GNU_SOURCE
|
#define _GNU_SOURCE
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <krb5.h>
|
#include <krb5.h>
|
||||||
@ -108,6 +109,7 @@ remove_realm(krb5_context context, krb5_keytab ktid, const char *realm, int debu
|
|||||||
krb5_kt_cursor kt_cursor;
|
krb5_kt_cursor kt_cursor;
|
||||||
char * entry_princ_s = NULL;
|
char * entry_princ_s = NULL;
|
||||||
int rval = 0;
|
int rval = 0;
|
||||||
|
bool realm_found = false;
|
||||||
|
|
||||||
krberr = krb5_kt_start_seq_get(context, ktid, &kt_cursor);
|
krberr = krb5_kt_start_seq_get(context, ktid, &kt_cursor);
|
||||||
memset(&entry, 0, sizeof(entry));
|
memset(&entry, 0, sizeof(entry));
|
||||||
@ -128,6 +130,7 @@ remove_realm(krb5_context context, krb5_keytab ktid, const char *realm, int debu
|
|||||||
krb5_kt_end_seq_get(context, ktid, &kt_cursor);
|
krb5_kt_end_seq_get(context, ktid, &kt_cursor);
|
||||||
|
|
||||||
if (strstr(entry_princ_s, realm) != NULL) {
|
if (strstr(entry_princ_s, realm) != NULL) {
|
||||||
|
realm_found = true;
|
||||||
rval = remove_principal(context, ktid, entry_princ_s, debug);
|
rval = remove_principal(context, ktid, entry_princ_s, debug);
|
||||||
if (rval != 0)
|
if (rval != 0)
|
||||||
goto done;
|
goto done;
|
||||||
@ -136,6 +139,11 @@ remove_realm(krb5_context context, krb5_keytab ktid, const char *realm, int debu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!realm_found) {
|
||||||
|
fprintf(stderr, _("realm not found\n"));
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
|
||||||
return rval;
|
return rval;
|
||||||
|
@ -84,6 +84,6 @@ The exit status is 0 on success, nonzero on error.
|
|||||||
|
|
||||||
4 Unable to parse the principal name
|
4 Unable to parse the principal name
|
||||||
|
|
||||||
5 Principal name not found in keytab
|
5 Principal name or realm not found in keytab
|
||||||
|
|
||||||
6 Unable to remove principal from keytab
|
6 Unable to remove principal from keytab
|
||||||
|
Loading…
Reference in New Issue
Block a user