Skip to content

Commit 0fce220

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 e17c8da commit 0fce220

File tree

5 files changed

+541
-8
lines changed

5 files changed

+541
-8
lines changed

misc/openvas-krb5.c

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -469,18 +469,28 @@ o_krb5_gss_prepare_context (const OKrb5Credential *creds,
469469
target->host_name.len + target->domain.len
470470
+ target->service.len + creds->realm.len + 4,
471471
result);
472-
sprintf (target_principal_str, "%s/%s/%s@%s",
473-
(char *) target->service.data, (char *) target->host_name.data,
474-
(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);
475480
}
476481
else
477482
{
478483
ALLOCATE_AND_CHECK (target_principal_str, char,
479484
target->host_name.len + target->service.len
480485
+ creds->realm.len + 3,
481486
result);
482-
sprintf (target_principal_str, "%s/%s@%s", (char *) target->service.data,
483-
(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);
484494
}
485495

486496
targetbuf = (gss_buffer_desc) {
@@ -499,9 +509,6 @@ o_krb5_gss_prepare_context (const OKrb5Credential *creds,
499509
}
500510

501511
gss_context->gss_target = gss_target;
502-
// gss_set_neg_mechs() already specified that we want gss_mech_krb5
503-
// and/or gss_mech_iakerb
504-
// so we use spnego to do the negotiation
505512
gss_context->gss_mech = gss_mech_spnego;
506513
gss_context->gss_want_flags = GSS_C_MUTUAL_FLAG | GSS_C_DELEG_POLICY_FLAG
507514
| 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
use crate::notus::NotusError;
@@ -57,6 +59,9 @@ pub enum BuiltinError {
5759
RawIp(RawIpError),
5860
#[error("{0}")]
5961
Preference(String),
62+
#[cfg(feature = "nasl-c-lib")]
63+
#[error("{0}")]
64+
Krb5(Krb5Error),
6065
}
6166

6267
macro_rules! builtin_error_variant (
@@ -104,3 +109,6 @@ builtin_error_variant!(FindServiceError, FindService);
104109
builtin_error_variant!(SnmpError, Snmp);
105110
builtin_error_variant!(NotusError, Notus);
106111
builtin_error_variant!(RawIpError, RawIp);
112+
113+
#[cfg(feature = "nasl-c-lib")]
114+
builtin_error_variant!(Krb5Error, Krb5);

0 commit comments

Comments
 (0)