summaryrefslogtreecommitdiffstats
path: root/src/lib/gssapi
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2008-03-29 01:08:31 +0000
committerKen Raeburn <raeburn@mit.edu>2008-03-29 01:08:31 +0000
commit71ca378e4b7fb64f77bbf58ba15f4665072163bd (patch)
tree68100281c2e466be22ec4ab5e741f58158f46704 /src/lib/gssapi
parentcb44e7b91175854d3ca668ec043a48f02b2c37e8 (diff)
downloadkrb5-71ca378e4b7fb64f77bbf58ba15f4665072163bd.tar.gz
krb5-71ca378e4b7fb64f77bbf58ba15f4665072163bd.tar.xz
krb5-71ca378e4b7fb64f77bbf58ba15f4665072163bd.zip
Coverity CID 228: Possible use of uninitialized variable time_req in
gss_add_cred if cred_usage has an invalid value. (Also flagged by GCC.) Changed validation routines for gss_add_cred, gss_acquire_cred, and gss_store_cred to check the cred_usage value. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20295 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/gssapi')
-rw-r--r--src/lib/gssapi/mechglue/g_acquire_cred.c21
-rw-r--r--src/lib/gssapi/mechglue/g_store_cred.c10
2 files changed, 30 insertions, 1 deletions
diff --git a/src/lib/gssapi/mechglue/g_acquire_cred.c b/src/lib/gssapi/mechglue/g_acquire_cred.c
index 6d63e5b8f2..fbe66681f4 100644
--- a/src/lib/gssapi/mechglue/g_acquire_cred.c
+++ b/src/lib/gssapi/mechglue/g_acquire_cred.c
@@ -105,6 +105,16 @@ val_acq_cred_args(
if (output_cred_handle == NULL)
return (GSS_S_CALL_INACCESSIBLE_WRITE);
+ if (cred_usage != GSS_C_ACCEPT
+ && cred_usage != GSS_C_INITIATE
+ && cred_usage != GSS_C_BOTH) {
+ if (minor_status) {
+ *minor_status = EINVAL;
+ map_errcode(minor_status);
+ }
+ return GSS_S_FAILURE;
+ }
+
return (GSS_S_COMPLETE);
}
@@ -281,9 +291,18 @@ val_add_cred_args(
if (input_cred_handle == GSS_C_NO_CREDENTIAL &&
output_cred_handle == NULL)
-
return (GSS_S_CALL_INACCESSIBLE_WRITE | GSS_S_NO_CRED);
+ if (cred_usage != GSS_C_ACCEPT
+ && cred_usage != GSS_C_INITIATE
+ && cred_usage != GSS_C_BOTH) {
+ if (minor_status) {
+ *minor_status = EINVAL;
+ map_errcode(minor_status);
+ }
+ return GSS_S_FAILURE;
+ }
+
return (GSS_S_COMPLETE);
}
diff --git a/src/lib/gssapi/mechglue/g_store_cred.c b/src/lib/gssapi/mechglue/g_store_cred.c
index b02f7069ad..d9a7d9adcf 100644
--- a/src/lib/gssapi/mechglue/g_store_cred.c
+++ b/src/lib/gssapi/mechglue/g_store_cred.c
@@ -39,6 +39,16 @@ val_store_cred_args(
if (input_cred_handle == GSS_C_NO_CREDENTIAL)
return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CRED);
+ if (cred_usage != GSS_C_ACCEPT
+ && cred_usage != GSS_C_INITIATE
+ && cred_usage != GSS_C_BOTH) {
+ if (minor_status) {
+ *minor_status = EINVAL;
+ map_errcode(minor_status);
+ }
+ return GSS_S_FAILURE;
+ }
+
return (GSS_S_COMPLETE);
}