[SSSD] [PATCH] KRB5_CHILD: Fix handling of get_password return code

Jakub Hrozek jhrozek at redhat.com
Wed Jul 10 15:14:51 UTC 2013


On Wed, Jun 26, 2013 at 10:53:27AM +0200, Lukas Slebodnik wrote:
> On (25/06/13 15:20), Ondrej Kos wrote:
> >On 06/25/2013 03:01 PM, Lukas Slebodnik wrote:
> >>On (25/06/13 10:48), Ondrej Kos wrote:
> >>>On 06/24/2013 05:06 PM, Ondrej Kos wrote:
> >>>>While working on #1814 i noticed that there's a dead switch statement
> >>>>(with no case/default), attached patch fixes this issue.
> >>>>
> >>>>Ondra
> >>>>
> >>>>
> >>>>_______________________________________________
> >>>>sssd-devel mailing list
> >>>>sssd-devel at lists.fedorahosted.org
> >>>>https://lists.fedorahosted.org/mailman/listinfo/sssd-devel
> >>>>
> >>>
> >>>Looking at the original code, I moved the EINVAL and ENOENT cases
> >>>together as was originally intended.
> >>>
> >>>Patch is attached
> >>>
> >>>Ondra
> >>>
> >>>--
> >>>Ondrej Kos
> >>>Associate Software Engineer
> >>>Identity Management - SSSD
> >>>Red Hat Czech
> >>
> >>>From 5a406d241949de9f939e96d078669b84f776927e Mon Sep 17 00:00:00 2001
> >>>From: Ondrej Kos <okos at redhat.com>
> >>>Date: Mon, 24 Jun 2013 16:55:02 +0200
> >>>Subject: [PATCH] KRB5_CHILD: Fix handling of get_password return code
> >>>
> >>>The switch statement was dead code due to missing case/default.
> >>>---
> >>>src/providers/krb5/krb5_child.c | 15 +++++++++++----
> >>>1 file changed, 11 insertions(+), 4 deletions(-)
> >>>
> >>>diff --git a/src/providers/krb5/krb5_child.c b/src/providers/krb5/krb5_child.c
> >>>index e9fbfbeafe774bc82f8be4976cc1b5a67a6acc5b..f67274bf2d761e5457e6c2e50b3351a99eb25054 100644
> >>>--- a/src/providers/krb5/krb5_child.c
> >>>+++ b/src/providers/krb5/krb5_child.c
> >>>@@ -1327,12 +1327,19 @@ static errno_t tgt_req_child(struct krb5_req *kr)
> >>>
> >>>     ret = sss_authtok_get_password(kr->pd->authtok, &password, NULL);
> >>>     switch (ret) {
> >>>-        if (ret == EACCES) {
> >>>+        case EACCES:
> >>>             DEBUG(SSSDBG_OP_FAILURE, ("Invalid authtok type\n"));
> >>>             return ERR_INVALID_CRED_TYPE;
> >>>-        }
> >>>-        DEBUG(SSSDBG_OP_FAILURE, ("No credentials available\n"));
> >>>-        return ERR_NO_CREDS;
> >>>+            break;
> >>>+
> >>>+        case ENOENT:
> >>>+        case EINVAL:
> >>>+            DEBUG(SSSDBG_OP_FAILURE, ("No credentials available\n"));
> >>>+            return ERR_NO_CREDS;
> >>>+            break;
> >>>+
> >>>+        case EOK:
> >>>+            break;
> >>>     }
> >>
> >>According to
> >>www.freeipa.org/page/Coding_Style#Switch
> >>/* Always have default */
> >>
> >>I would prefer:
> >>case EACCES:
> >>     /* snip */
> >>case EOK:
> >>     /* snip */
> >>default:
> >>
> >>LS
> >>_______________________________________________
> >>sssd-devel mailing list
> >>sssd-devel at lists.fedorahosted.org
> >>https://lists.fedorahosted.org/mailman/listinfo/sssd-devel
> >>
> >
> >Thanks, new patch is attached.
> >
> >Ondra
> >
> >-- 
> >Ondrej Kos
> >Associate Software Engineer
> >Identity Management - SSSD
> >Red Hat Czech
> 
> >From 29fdd38519b2f05b7d4a6cc8f3cf588270528a24 Mon Sep 17 00:00:00 2001
> >From: Ondrej Kos <okos at redhat.com>
> >Date: Mon, 24 Jun 2013 16:55:02 +0200
> >Subject: [PATCH] KRB5_CHILD: Fix handling of get_password return code
> >
> >The switch statement was dead code due to missing case/default.
> >---
> > src/providers/krb5/krb5_child.c | 14 ++++++++++----
> > 1 file changed, 10 insertions(+), 4 deletions(-)
> >
> >diff --git a/src/providers/krb5/krb5_child.c b/src/providers/krb5/krb5_child.c
> >index e9fbfbeafe774bc82f8be4976cc1b5a67a6acc5b..4873b3dc34f4e7f81de43cbffea08d1f96a4c283 100644
> >--- a/src/providers/krb5/krb5_child.c
> >+++ b/src/providers/krb5/krb5_child.c
> >@@ -1327,12 +1327,18 @@ static errno_t tgt_req_child(struct krb5_req *kr)
> > 
> >     ret = sss_authtok_get_password(kr->pd->authtok, &password, NULL);
> >     switch (ret) {
> >-        if (ret == EACCES) {
> >+        case EOK:
> >+            break;
> >+
> >+        case EACCES:
> >             DEBUG(SSSDBG_OP_FAILURE, ("Invalid authtok type\n"));
> >             return ERR_INVALID_CRED_TYPE;
> >-        }
> >-        DEBUG(SSSDBG_OP_FAILURE, ("No credentials available\n"));
> >-        return ERR_NO_CREDS;
> >+            break;
> >+
> >+        default:
> >+            DEBUG(SSSDBG_OP_FAILURE, ("No credentials available\n"));
> >+            return ERR_NO_CREDS;
> >+            break;
> >     }
> > 
> >     kerr = get_and_save_tgt(kr, password);
> >-- 
> >1.8.1.4
> >
> 
> ACK
> 
> LS

Pushed to master and sssd-1-10



More information about the sssd-devel mailing list