Skip to content

Commit 26494b3

Browse files
committed
Add: Nasl builtin functions for Kerberos support
This includes: - krb5_error_code_to_string - krb5_find_kdc - krb5_gss_init - krb5_gss_prepare_context - krb5_gss_session_key - krb5_gss_update_context - krb5_gss_update_context_needs_more - krb5_gss_update_context_out - krb5_is_failure - krb5_is_success
1 parent bf141d3 commit 26494b3

File tree

5 files changed

+545
-10
lines changed

5 files changed

+545
-10
lines changed

misc/openvas-krb5.c

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,8 @@ okrb5_gss_free_context (struct OKrb5GSSContext *context)
413413
}
414414
if (context->gss_ctx != GSS_C_NO_CONTEXT)
415415
{
416-
gss_delete_sec_context (&min_stat, &context->gss_ctx, GSS_C_NO_BUFFER);
416+
gss_delete_sec_context (&min_stat, &context->gss_ctx,
417+
GSS_C_NO_BUFFER);
417418
}
418419
if (context->gss_target != GSS_C_NO_NAME)
419420
{
@@ -468,21 +469,31 @@ o_krb5_gss_prepare_context (const OKrb5Credential *creds,
468469
target->host_name.len + target->domain.len
469470
+ target->service.len + creds->realm.len + 4,
470471
result);
471-
sprintf (target_principal_str, "%s/%s/%s@%s",
472-
(char *) target->service.data, (char *) target->host_name.data,
473-
(char *) target->domain.data, (char *) creds->realm.data);
472+
snprintf (target_principal_str,
473+
target->host_name.len + target->domain.len + target->service.len
474+
+ creds->realm.len + 4,
475+
"%.*s/%.*s/%.*s@%.*s", (int) target->service.len,
476+
(char *) target->service.data, (int) target->host_name.len,
477+
(char *) target->host_name.data, (int) target->domain.len,
478+
(char *) target->domain.data, (int) creds->realm.len,
479+
(char *) creds->realm.data);
474480
}
475481
else
476482
{
477483
ALLOCATE_AND_CHECK (target_principal_str, char,
478484
target->host_name.len + target->service.len
479485
+ creds->realm.len + 3,
480486
result);
481-
sprintf (target_principal_str, "%s/%s@%s", (char *) target->service.data,
482-
(char *) target->host_name.data, (char *) creds->realm.data);
487+
snprintf (target_principal_str,
488+
target->host_name.len + target->service.len + creds->realm.len
489+
+ 3,
490+
"%.*s/%.*s@%.*s", (int) target->service.len,
491+
(char *) target->service.data, (int) target->host_name.len,
492+
(char *) target->host_name.data, (int) creds->realm.len,
493+
(char *) creds->realm.data);
483494
}
484495

485-
targetbuf = (gss_buffer_desc){
496+
targetbuf = (gss_buffer_desc) {
486497
.value = target_principal_str,
487498
.length = strlen (target_principal_str),
488499
};
@@ -498,9 +509,6 @@ o_krb5_gss_prepare_context (const OKrb5Credential *creds,
498509
}
499510

500511
gss_context->gss_target = gss_target;
501-
// gss_set_neg_mechs() already specified that we want gss_mech_krb5
502-
// and/or gss_mech_iakerb
503-
// so we use spnego to do the negotiation
504512
gss_context->gss_mech = gss_mech_spnego;
505513
gss_context->gss_want_flags = GSS_C_MUTUAL_FLAG | GSS_C_DELEG_POLICY_FLAG
506514
| GSS_C_REPLAY_FLAG | GSS_C_SEQUENCE_FLAG

rust/Cargo.lock

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/src/nasl/builtin/error.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
use thiserror::Error;
66

7+
#[cfg(feature = "nasl-c-lib")]
8+
use crate::nasl::builtin::krb5::Krb5Error;
79
use crate::nasl::prelude::*;
810
use crate::nasl::utils::error::FnErrorKind;
911

@@ -56,6 +58,9 @@ pub enum BuiltinError {
5658
RawIp(RawIpError),
5759
#[error("{0}")]
5860
Preference(String),
61+
#[cfg(feature = "nasl-c-lib")]
62+
#[error("{0}")]
63+
Krb5(Krb5Error),
5964
}
6065

6166
macro_rules! builtin_error_variant (
@@ -104,3 +109,6 @@ builtin_error_variant!(SnmpError, Snmp);
104109

105110
#[cfg(feature = "nasl-builtin-raw-ip")]
106111
builtin_error_variant!(RawIpError, RawIp);
112+
113+
#[cfg(feature = "nasl-c-lib")]
114+
builtin_error_variant!(Krb5Error, Krb5);

0 commit comments

Comments
 (0)