diff mbox

svcgssd: Encryption types not being parsed correctly

Message ID 1353160661-30105-1-git-send-email-steved@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Steve Dickson Nov. 17, 2012, 1:57 p.m. UTC
When svcgssd reads the supported encrytion types from the
kernel, they are prefixed with a 'enctypes='. That prefix
has to be ignored to correctly parse the rest of the types.

Signed-off-by: Steve Dickson <steved@redhat.com>
---
 utils/gssd/svcgssd_krb5.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Steve Dickson Nov. 19, 2012, 3:53 p.m. UTC | #1
On 17/11/12 08:57, Steve Dickson wrote:
> When svcgssd reads the supported encrytion types from the
> kernel, they are prefixed with a 'enctypes='. That prefix
> has to be ignored to correctly parse the rest of the types.
> 
> Signed-off-by: Steve Dickson <steved@redhat.com>
Committed... 

steved.

> ---
>  utils/gssd/svcgssd_krb5.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/utils/gssd/svcgssd_krb5.c b/utils/gssd/svcgssd_krb5.c
> index 6c34faf..1d44d34 100644
> --- a/utils/gssd/svcgssd_krb5.c
> +++ b/utils/gssd/svcgssd_krb5.c
> @@ -38,6 +38,7 @@
>  
>  #include <stdio.h>
>  #include <errno.h>
> +#include <ctype.h>
>  #include <gssapi/gssapi.h>
>  #include <krb5.h>
>  
> @@ -98,6 +99,12 @@ parse_enctypes(char *enctypes)
>  	if (n == 0)
>  		return ENOENT;
>  
> +	/* Skip pass any non digits */
> +	while (*enctypes && isdigit(*enctypes) == 0)
> +		enctypes++;
> +	if (*enctypes == '\0')
> +		return EINVAL;
> +
>  	/* Allocate space for enctypes array */
>  	if ((parsed_enctypes = (int *) calloc(n, sizeof(int))) == NULL) {
>  		return ENOMEM;
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/utils/gssd/svcgssd_krb5.c b/utils/gssd/svcgssd_krb5.c
index 6c34faf..1d44d34 100644
--- a/utils/gssd/svcgssd_krb5.c
+++ b/utils/gssd/svcgssd_krb5.c
@@ -38,6 +38,7 @@ 
 
 #include <stdio.h>
 #include <errno.h>
+#include <ctype.h>
 #include <gssapi/gssapi.h>
 #include <krb5.h>
 
@@ -98,6 +99,12 @@  parse_enctypes(char *enctypes)
 	if (n == 0)
 		return ENOENT;
 
+	/* Skip pass any non digits */
+	while (*enctypes && isdigit(*enctypes) == 0)
+		enctypes++;
+	if (*enctypes == '\0')
+		return EINVAL;
+
 	/* Allocate space for enctypes array */
 	if ((parsed_enctypes = (int *) calloc(n, sizeof(int))) == NULL) {
 		return ENOMEM;