pkgsrc-WIP-changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
vscode: use heimdal on NetBSD
Module Name: pkgsrc-wip
Committed By: kikadf <kikadf.01%gmail.com@localhost>
Pushed By: kikadf
Date: Fri Oct 30 18:47:33 2026 +0100
Changeset: ce532f75a87f560aa133104292ce356f815d8fae
Modified Files:
vscode/Makefile
vscode/distinfo
vscode/patches/patch-node__modules_kerberos_binding.gyp
vscode/patches/patch-node__modules_kerberos_src_unix_kerberos__gss.cc
vscode/patches/patch-remote_node__modules_kerberos_binding.gyp
vscode/patches/patch-remote_node__modules_kerberos_src_unix_kerberos__gss.cc
Added Files:
vscode/patches/patch-node__modules_kerberos_src_unix_kerberos__gss.h
vscode/patches/patch-remote_node__modules_kerberos_src_unix_kerberos__gss.h
Log Message:
vscode: use heimdal on NetBSD
To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=ce532f75a87f560aa133104292ce356f815d8fae
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
diffstat:
vscode/Makefile | 2 -
vscode/distinfo | 10 +-
.../patch-node__modules_kerberos_binding.gyp | 22 +++-
...ode__modules_kerberos_src_unix_kerberos__gss.cc | 112 ++++++++++++++++++++-
...node__modules_kerberos_src_unix_kerberos__gss.h | 40 ++++++++
...patch-remote_node__modules_kerberos_binding.gyp | 22 +++-
...ode__modules_kerberos_src_unix_kerberos__gss.cc | 112 ++++++++++++++++++++-
...node__modules_kerberos_src_unix_kerberos__gss.h | 40 ++++++++
8 files changed, 340 insertions(+), 20 deletions(-)
diffs:
diff --git a/vscode/Makefile b/vscode/Makefile
index 12286091d5..762388eb8e 100644
--- a/vscode/Makefile
+++ b/vscode/Makefile
@@ -284,7 +284,5 @@ do-install:
.include "../../lang/rust/cargo.mk"
.include "../../security/libsecret/buildlink3.mk"
.include "../../sysutils/desktop-file-utils/desktopdb.mk"
-KRB5_DEFAULT= mit-krb5
-KRB5_ACCEPTED= mit-krb5
.include "../../mk/krb5.buildlink3.mk"
.include "../../mk/bsd.pkg.mk"
diff --git a/vscode/distinfo b/vscode/distinfo
index 2866516f4f..241615e379 100644
--- a/vscode/distinfo
+++ b/vscode/distinfo
@@ -362,9 +362,10 @@ SHA1 (patch-node__modules_@vscode_os-proxy-resolver_index.js) = dacd79489a8cf4bb
SHA1 (patch-node__modules_@vscode_os-proxy-resolver_package.json) = f295e21cbd65f3b6591f0486fa1e44517d807815
SHA1 (patch-node__modules_cpu-features_deps_cpu__features_include_cpu__features__macros.h) = 6bf7a0381fcf393ba5973c4f0f0f4a1150efc099
SHA1 (patch-node__modules_cpu-features_deps_cpu__features_src_impl__x86__linux__or__android.c) = bf6a7479212a1974b82dbdc934fbf83cdf117bd2
-SHA1 (patch-node__modules_kerberos_binding.gyp) = 499b56fcc27f12d7f28a4af5bce7ff4153c12c91
+SHA1 (patch-node__modules_kerberos_binding.gyp) = 9342b4e93fd011f40326d2eadca71bbc0ed2dfc9
SHA1 (patch-node__modules_kerberos_src_kerberos__common.h) = ddd3efdc51d2806bea30462308b324c151657d21
-SHA1 (patch-node__modules_kerberos_src_unix_kerberos__gss.cc) = 97b3764efae0f7960ab29095d28c1de2f3e58f52
+SHA1 (patch-node__modules_kerberos_src_unix_kerberos__gss.cc) = 2f293eae37df5f21e3e7bd121cca0bd5636e871c
+SHA1 (patch-node__modules_kerberos_src_unix_kerberos__gss.h) = f82c78c38623f562a32fd9aa880f6275a433a9f0
SHA1 (patch-node__modules_nan_nan__callbacks__12__inl.h) = 3850a6cc579a1a8e093940a359df70d7d3e31ea5
SHA1 (patch-node__modules_nan_nan__callbacks__pre__12__inl.h) = 564be4abb048f212ef9161d60dba55e6447ac261
SHA1 (patch-node__modules_nan_nan__implementation__12__inl.h) = f3891db57a1f79bd9df8d0300e5a6da4d21010a1
@@ -376,9 +377,10 @@ SHA1 (patch-os-proxy-resolver_Cargo.toml) = 0e9e2b4fb828e64b611c4de9bcb7c6ec97b2
SHA1 (patch-os-proxy-resolver_src_platform_linux.rs) = 0d575486a7484e085a63f266f3772e1397a5941e
SHA1 (patch-os-proxy-resolver_src_platform_mod.rs) = 3dcb74339de0aedad95256a47f9ddbc5e8e6dbbd
SHA1 (patch-product.json) = 36f64bed665c508a803b93699ee8a74f83106261
-SHA1 (patch-remote_node__modules_kerberos_binding.gyp) = 1757f0393f883a84a62cf3b5324151d52d0f33a7
+SHA1 (patch-remote_node__modules_kerberos_binding.gyp) = 6e1730a737cd990c41dbed87755d63ec443a30bd
SHA1 (patch-remote_node__modules_kerberos_src_kerberos__common.h) = aece552353c01cf81e4039a4a5a63a6ee7e491cd
-SHA1 (patch-remote_node__modules_kerberos_src_unix_kerberos__gss.cc) = 73325a526c324fa530ffe3d08d4d8d60ebd6c1be
+SHA1 (patch-remote_node__modules_kerberos_src_unix_kerberos__gss.cc) = 0e9ef818bc8844794ecd420b2ecc83fb4435b2b1
+SHA1 (patch-remote_node__modules_kerberos_src_unix_kerberos__gss.h) = 84cd4a952244a9581360d9e42514eb3981b971d2
SHA1 (patch-remote_node__modules_nan_nan__callbacks__12__inl.h) = 284be5678336a157cf13797b40a40a756dc42048
SHA1 (patch-remote_node__modules_nan_nan__callbacks__pre__12__inl.h) = 2af343c43bdbe273232325de96000d067e0db908
SHA1 (patch-remote_node__modules_nan_nan__implementation__12__inl.h) = 39022d6704a7a19b79470e27b4d06a1da6a78606
diff --git a/vscode/patches/patch-node__modules_kerberos_binding.gyp b/vscode/patches/patch-node__modules_kerberos_binding.gyp
index 57a8a703d8..a8af766045 100644
--- a/vscode/patches/patch-node__modules_kerberos_binding.gyp
+++ b/vscode/patches/patch-node__modules_kerberos_binding.gyp
@@ -2,7 +2,7 @@ $NetBSD$
* Add support to NetBSD and FreeBSD
---- node_modules/kerberos/binding.gyp.orig 2026-10-25 08:38:45.374306531 +0000
+--- node_modules/kerberos/binding.gyp.orig 2026-10-29 12:48:45.952937428 +0000
+++ node_modules/kerberos/binding.gyp
@@ -54,14 +54,14 @@
]
@@ -17,7 +17,7 @@ $NetBSD$
]
}],
- ['(OS=="mac" or OS=="linux") and (kerberos_use_rtld!="true")', {
-+ ['(OS=="mac" or OS=="linux" or OS=="freebsd" or OS=="netbsd") and (kerberos_use_rtld!="true")', {
++ ['(OS=="mac" or OS=="linux" or OS=="freebsd") and (kerberos_use_rtld!="true")', {
'link_settings': {
'libraries': [
'-lkrb5',
@@ -26,15 +26,15 @@ $NetBSD$
]
}],
- ['(OS=="mac" or OS=="linux") and (kerberos_use_rtld=="true")', {
-+ ['(OS=="mac" or OS=="linux" or OS=="freebsd" or OS=="netbsd") and (kerberos_use_rtld=="true")', {
++ ['(OS=="mac" or OS=="linux" or OS=="freebsd") and (kerberos_use_rtld=="true")', {
'defines': ['KERBEROS_USE_RTLD=1'],
'link_settings': {
'libraries': [
-@@ -86,6 +86,16 @@
+@@ -86,6 +86,28 @@
]
},
}],
-+ ['OS=="freebsd" or OS=="netbsd"', {
++ ['OS=="freebsd"', {
+ 'include_dirs+': [
+ '<!(pkg-config krb5 --cflags-only-I | sed -E "s/(-I *|-isystem *)//g")',
+ ],
@@ -43,6 +43,18 @@ $NetBSD$
+ '<!(pkg-config krb5 --libs-only-L | sed -e "s/-L//g")',
+ ]
+ },
++ }],
++ ['OS=="netbsd"', {
++ 'include_dirs+': [
++ '/usr/include/krb5',
++ ],
++ 'link_settings': {
++ 'libraries': [
++ '-lgssapi',
++ '-lkrb5',
++ '-lcom_err',
++ ]
++ },
+ }],
['OS=="win"', {
'sources': [
diff --git a/vscode/patches/patch-node__modules_kerberos_src_unix_kerberos__gss.cc b/vscode/patches/patch-node__modules_kerberos_src_unix_kerberos__gss.cc
index c7b6559976..1402c7c4da 100644
--- a/vscode/patches/patch-node__modules_kerberos_src_unix_kerberos__gss.cc
+++ b/vscode/patches/patch-node__modules_kerberos_src_unix_kerberos__gss.cc
@@ -1,14 +1,15 @@
$NetBSD$
* Add support to NetBSD and FreeBSD
+* Use heimdal on NetBSD, heimdal has krb5_get_err_text()
---- node_modules/kerberos/src/unix/kerberos_gss.cc.orig 2026-10-25 08:51:52.363705515 +0000
+--- node_modules/kerberos/src/unix/kerberos_gss.cc.orig 2026-10-30 16:03:08.319215758 +0000
+++ node_modules/kerberos/src/unix/kerberos_gss.cc
@@ -65,10 +65,17 @@ struct DLOpenHandle {
DLOpenHandle& operator=(DLOpenHandle&) = delete;
};
-+#if !defined(__FreeBSD__) && !defined(__NetBSD__)
++#ifndef __FreeBSD__
#define DYLIBS(V) \
V(gssapi, "libgssapi_krb5.so.2") \
V(krb5, "libkrb5.so.3") \
@@ -22,3 +23,110 @@ $NetBSD$
#define LIBRARY_HANDLE_GETTER(name, lib) \
static const DLOpenHandle& name ## _handle() { \
+@@ -120,9 +127,11 @@ bool kerberos_libraries_available(std::s
+
+ namespace node_kerberos {
+
++#if !defined(__NetBSD__)
+ const char* krb5_get_err_text(const krb5_context&, krb5_error_code code) {
+ return COMERR_CALL(error_message)(code);
+ }
++#endif
+
+ static gss_result gss_success_result(int ret);
+ static gss_result gss_error_result(OM_uint32 err_maj, OM_uint32 err_min);
+@@ -138,7 +147,12 @@ gss_result server_principal_details(cons
+ int code;
+ krb5_context kcontext;
+ krb5_keytab kt = NULL;
++#if defined(__NetBSD__)
++ krb5_kt_cursor cursor;
++ bool cursor_open = false;
++#else
+ krb5_kt_cursor cursor = NULL;
++#endif
+ krb5_keytab_entry entry;
+ char* pname = NULL;
+
+@@ -162,6 +176,10 @@ gss_result server_principal_details(cons
+ result =
+ gss_error_result_with_message_and_code("Cannot get sequence cursor from keytab", code);
+ goto end;
++#if defined(__NetBSD__)
++ } else {
++ cursor_open = true;
++#endif
+ }
+
+ while ((code = KRB5_CALL(krb5_kt_next_entry)(kcontext, kt, &entry, &cursor)) == 0) {
+@@ -189,7 +207,11 @@ gss_result server_principal_details(cons
+ result.data = std::move(details);
+ }
+ end:
++#if defined(__NetBSD__)
++ if (cursor_open)
++#else
+ if (cursor)
++#endif
+ KRB5_CALL(krb5_kt_end_seq_get)(kcontext, kt, &cursor);
+ if (kt)
+ KRB5_CALL(krb5_kt_close)(kcontext, kt);
+@@ -698,6 +720,7 @@ gss_result authenticate_user_krb5pwd(con
+ gss_result result {};
+ int ret = 0;
+ char* name = NULL;
++ const char* text = NULL;
+ char* p = NULL;
+
+ // for verify
+@@ -715,13 +738,15 @@ gss_result authenticate_user_krb5pwd(con
+
+ ret = KRB5_CALL(krb5_parse_name)(kcontext, service, &server);
+ if (ret) {
+- result = gss_error_result_with_message_and_code(krb5_get_err_text(kcontext, ret), ret);
++ text = krb5_get_err_text(kcontext, ret);
++ result = gss_error_result_with_message_and_code(text ? text : "Unknown Kerberos5 error", ret);
+ goto end;
+ }
+
+ code = KRB5_CALL(krb5_unparse_name)(kcontext, server, &name);
+ if (code) {
+- result = gss_error_result_with_message_and_code(krb5_get_err_text(kcontext, code), code);
++ text = krb5_get_err_text(kcontext, code);
++ result = gss_error_result_with_message_and_code(text ? text : "Unknown Kerberos5 error", code);
+ goto end;
+ }
+
+@@ -742,7 +767,8 @@ gss_result authenticate_user_krb5pwd(con
+
+ code = KRB5_CALL(krb5_parse_name)(kcontext, name, &client);
+ if (code) {
+- result = gss_error_result_with_message_and_code(krb5_get_err_text(kcontext, code), code);
++ text = krb5_get_err_text(kcontext, code);
++ result = gss_error_result_with_message_and_code(text ? text : "Unknown Kerberos5 error", code);
+ goto end;
+ }
+
+@@ -758,8 +784,8 @@ gss_result authenticate_user_krb5pwd(con
+ verifyRet = KRB5_CALL(krb5_get_init_creds_password)(
+ kcontext, &creds, client, (char*)pswd, NULL, NULL, 0, NULL, &gic_options);
+ if (verifyRet) {
+- result = gss_error_result_with_message_and_code(krb5_get_err_text(kcontext, verifyRet),
+- verifyRet);
++ text = krb5_get_err_text(kcontext, verifyRet);
++ result = gss_error_result_with_message_and_code(text ? text : "Unknown Kerberos5 error", verifyRet);
+ KRB5_CALL(krb5_free_cred_contents)(kcontext, &creds);
+ goto end;
+ }
+@@ -777,6 +803,11 @@ end:
+ if (server) {
+ KRB5_CALL(krb5_free_principal)(kcontext, server);
+ }
++#if defined(__NetBSD__)
++ if (text) {
++ krb5_free_error_message(kcontext, text);
++ }
++#endif
+ KRB5_CALL(krb5_free_context)(kcontext);
+
+ return result;
diff --git a/vscode/patches/patch-node__modules_kerberos_src_unix_kerberos__gss.h b/vscode/patches/patch-node__modules_kerberos_src_unix_kerberos__gss.h
new file mode 100644
index 0000000000..d450a5a37a
--- /dev/null
+++ b/vscode/patches/patch-node__modules_kerberos_src_unix_kerberos__gss.h
@@ -0,0 +1,40 @@
+$NetBSD$
+
+* Use heimdal on NetBSD, heimdal has krb5_get_err_text()
+
+--- node_modules/kerberos/src/unix/kerberos_gss.h.orig 2026-10-30 16:03:08.515666856 +0000
++++ node_modules/kerberos/src/unix/kerberos_gss.h
+@@ -19,15 +19,33 @@
+
+ extern "C" {
+ #include <gssapi/gssapi.h>
++#if defined(__NetBSD__)
++ #include <krb5.h>
++ #include <com_err.h>
++#else
+ #include <gssapi/gssapi_generic.h>
++#endif
+ #include <gssapi/gssapi_krb5.h>
+ }
+
++#if defined(__NetBSD__)
++/* MIT-only names, Heimdal equivalents */
++#ifndef gss_nt_service_name
++#define gss_nt_service_name GSS_C_NT_HOSTBASED_SERVICE
++#endif
++#ifndef krb5_free_keytab_entry_contents
++#define krb5_free_keytab_entry_contents krb5_kt_free_entry
++#endif
++#define krb5_get_err_text krb5_get_error_message
++#endif
++
+ #include <string>
+
+ namespace node_kerberos {
+
++#if !defined(__NetBSD__)
+ const char* krb5_get_err_text(const krb5_context&, krb5_error_code code);
++#endif
+
+ #define AUTH_GSS_ERROR -1
+ #define AUTH_GSS_COMPLETE 1
diff --git a/vscode/patches/patch-remote_node__modules_kerberos_binding.gyp b/vscode/patches/patch-remote_node__modules_kerberos_binding.gyp
index 7e2e43e1cd..3280916a20 100644
--- a/vscode/patches/patch-remote_node__modules_kerberos_binding.gyp
+++ b/vscode/patches/patch-remote_node__modules_kerberos_binding.gyp
@@ -2,7 +2,7 @@ $NetBSD$
* Add support to NetBSD and FreeBSD
---- remote/node_modules/kerberos/binding.gyp.orig 2026-10-24 14:37:41.000000000 +0000
+--- remote/node_modules/kerberos/binding.gyp.orig 2026-10-29 12:50:40.319082355 +0000
+++ remote/node_modules/kerberos/binding.gyp
@@ -54,14 +54,14 @@
]
@@ -17,7 +17,7 @@ $NetBSD$
]
}],
- ['(OS=="mac" or OS=="linux") and (kerberos_use_rtld!="true")', {
-+ ['(OS=="mac" or OS=="linux" or OS=="freebsd" or OS=="netbsd") and (kerberos_use_rtld!="true")', {
++ ['(OS=="mac" or OS=="linux" or OS=="freebsd") and (kerberos_use_rtld!="true")', {
'link_settings': {
'libraries': [
'-lkrb5',
@@ -26,15 +26,15 @@ $NetBSD$
]
}],
- ['(OS=="mac" or OS=="linux") and (kerberos_use_rtld=="true")', {
-+ ['(OS=="mac" or OS=="linux" or OS=="freebsd" or OS=="netbsd") and (kerberos_use_rtld=="true")', {
++ ['(OS=="mac" or OS=="linux" or OS=="freebsd") and (kerberos_use_rtld=="true")', {
'defines': ['KERBEROS_USE_RTLD=1'],
'link_settings': {
'libraries': [
-@@ -86,6 +86,16 @@
+@@ -86,6 +86,28 @@
]
},
}],
-+ ['OS=="freebsd" or OS=="netbsd"', {
++ ['OS=="freebsd"', {
+ 'include_dirs+': [
+ '<!(pkg-config krb5 --cflags-only-I | sed -E "s/(-I *|-isystem *)//g")',
+ ],
@@ -43,6 +43,18 @@ $NetBSD$
+ '<!(pkg-config krb5 --libs-only-L | sed -e "s/-L//g")',
+ ]
+ },
++ }],
++ ['OS=="netbsd"', {
++ 'include_dirs+': [
++ '/usr/include/krb5',
++ ],
++ 'link_settings': {
++ 'libraries': [
++ '-lgssapi',
++ '-lkrb5',
++ '-lcom_err',
++ ]
++ },
+ }],
['OS=="win"', {
'sources': [
diff --git a/vscode/patches/patch-remote_node__modules_kerberos_src_unix_kerberos__gss.cc b/vscode/patches/patch-remote_node__modules_kerberos_src_unix_kerberos__gss.cc
index e03bd94a46..f6751ee574 100644
--- a/vscode/patches/patch-remote_node__modules_kerberos_src_unix_kerberos__gss.cc
+++ b/vscode/patches/patch-remote_node__modules_kerberos_src_unix_kerberos__gss.cc
@@ -1,14 +1,15 @@
$NetBSD$
* Add support to NetBSD and FreeBSD
+* Use heimdal on NetBSD, heimdal has krb5_get_err_text()
---- remote/node_modules/kerberos/src/unix/kerberos_gss.cc.orig 2026-10-24 14:37:41.000000000 +0000
+--- remote/node_modules/kerberos/src/unix/kerberos_gss.cc.orig 2026-10-30 17:20:26.529451357 +0000
+++ remote/node_modules/kerberos/src/unix/kerberos_gss.cc
@@ -65,10 +65,17 @@ struct DLOpenHandle {
DLOpenHandle& operator=(DLOpenHandle&) = delete;
};
-+#if !defined(__FreeBSD__) && !defined(__NetBSD__)
++#ifndef __FreeBSD__
#define DYLIBS(V) \
V(gssapi, "libgssapi_krb5.so.2") \
V(krb5, "libkrb5.so.3") \
@@ -22,3 +23,110 @@ $NetBSD$
#define LIBRARY_HANDLE_GETTER(name, lib) \
static const DLOpenHandle& name ## _handle() { \
+@@ -120,9 +127,11 @@ bool kerberos_libraries_available(std::s
+
+ namespace node_kerberos {
+
++#if !defined(__NetBSD__)
+ const char* krb5_get_err_text(const krb5_context&, krb5_error_code code) {
+ return COMERR_CALL(error_message)(code);
+ }
++#endif
+
+ static gss_result gss_success_result(int ret);
+ static gss_result gss_error_result(OM_uint32 err_maj, OM_uint32 err_min);
+@@ -138,7 +147,12 @@ gss_result server_principal_details(cons
+ int code;
+ krb5_context kcontext;
+ krb5_keytab kt = NULL;
++#if defined(__NetBSD__)
++ krb5_kt_cursor cursor;
++ bool cursor_open = false;
++#else
+ krb5_kt_cursor cursor = NULL;
++#endif
+ krb5_keytab_entry entry;
+ char* pname = NULL;
+
+@@ -162,6 +176,10 @@ gss_result server_principal_details(cons
+ result =
+ gss_error_result_with_message_and_code("Cannot get sequence cursor from keytab", code);
+ goto end;
++#if defined(__NetBSD__)
++ } else {
++ cursor_open = true;
++#endif
+ }
+
+ while ((code = KRB5_CALL(krb5_kt_next_entry)(kcontext, kt, &entry, &cursor)) == 0) {
+@@ -189,7 +207,11 @@ gss_result server_principal_details(cons
+ result.data = std::move(details);
+ }
+ end:
++#if defined(__NetBSD__)
++ if (cursor_open)
++#else
+ if (cursor)
++#endif
+ KRB5_CALL(krb5_kt_end_seq_get)(kcontext, kt, &cursor);
+ if (kt)
+ KRB5_CALL(krb5_kt_close)(kcontext, kt);
+@@ -698,6 +720,7 @@ gss_result authenticate_user_krb5pwd(con
+ gss_result result {};
+ int ret = 0;
+ char* name = NULL;
++ const char* text = NULL;
+ char* p = NULL;
+
+ // for verify
+@@ -715,13 +738,15 @@ gss_result authenticate_user_krb5pwd(con
+
+ ret = KRB5_CALL(krb5_parse_name)(kcontext, service, &server);
+ if (ret) {
+- result = gss_error_result_with_message_and_code(krb5_get_err_text(kcontext, ret), ret);
++ text = krb5_get_err_text(kcontext, ret);
++ result = gss_error_result_with_message_and_code(text ? text : "Unknown Kerberos5 error", ret);
+ goto end;
+ }
+
+ code = KRB5_CALL(krb5_unparse_name)(kcontext, server, &name);
+ if (code) {
+- result = gss_error_result_with_message_and_code(krb5_get_err_text(kcontext, code), code);
++ text = krb5_get_err_text(kcontext, code);
++ result = gss_error_result_with_message_and_code(text ? text : "Unknown Kerberos5 error", code);
+ goto end;
+ }
+
+@@ -742,7 +767,8 @@ gss_result authenticate_user_krb5pwd(con
+
+ code = KRB5_CALL(krb5_parse_name)(kcontext, name, &client);
+ if (code) {
+- result = gss_error_result_with_message_and_code(krb5_get_err_text(kcontext, code), code);
++ text = krb5_get_err_text(kcontext, code);
++ result = gss_error_result_with_message_and_code(text ? text : "Unknown Kerberos5 error", code);
+ goto end;
+ }
+
+@@ -758,8 +784,8 @@ gss_result authenticate_user_krb5pwd(con
+ verifyRet = KRB5_CALL(krb5_get_init_creds_password)(
+ kcontext, &creds, client, (char*)pswd, NULL, NULL, 0, NULL, &gic_options);
+ if (verifyRet) {
+- result = gss_error_result_with_message_and_code(krb5_get_err_text(kcontext, verifyRet),
+- verifyRet);
++ text = krb5_get_err_text(kcontext, verifyRet);
++ result = gss_error_result_with_message_and_code(text ? text : "Unknown Kerberos5 error", verifyRet);
+ KRB5_CALL(krb5_free_cred_contents)(kcontext, &creds);
+ goto end;
+ }
+@@ -777,6 +803,11 @@ end:
+ if (server) {
+ KRB5_CALL(krb5_free_principal)(kcontext, server);
+ }
++#if defined(__NetBSD__)
++ if (text) {
++ krb5_free_error_message(kcontext, text);
++ }
++#endif
+ KRB5_CALL(krb5_free_context)(kcontext);
+
+ return result;
diff --git a/vscode/patches/patch-remote_node__modules_kerberos_src_unix_kerberos__gss.h b/vscode/patches/patch-remote_node__modules_kerberos_src_unix_kerberos__gss.h
new file mode 100644
index 0000000000..7b1e24e435
--- /dev/null
+++ b/vscode/patches/patch-remote_node__modules_kerberos_src_unix_kerberos__gss.h
@@ -0,0 +1,40 @@
+$NetBSD$
+
+* Use heimdal on NetBSD, heimdal has krb5_get_err_text()
+
+--- remote/node_modules/kerberos/src/unix/kerberos_gss.h.orig 2026-10-30 17:20:19.388982698 +0000
++++ remote/node_modules/kerberos/src/unix/kerberos_gss.h
+@@ -19,15 +19,33 @@
+
+ extern "C" {
+ #include <gssapi/gssapi.h>
++#if defined(__NetBSD__)
++ #include <krb5.h>
++ #include <com_err.h>
++#else
+ #include <gssapi/gssapi_generic.h>
++#endif
+ #include <gssapi/gssapi_krb5.h>
+ }
+
++#if defined(__NetBSD__)
++/* MIT-only names, Heimdal equivalents */
++#ifndef gss_nt_service_name
++#define gss_nt_service_name GSS_C_NT_HOSTBASED_SERVICE
++#endif
++#ifndef krb5_free_keytab_entry_contents
++#define krb5_free_keytab_entry_contents krb5_kt_free_entry
++#endif
++#define krb5_get_err_text krb5_get_error_message
++#endif
++
+ #include <string>
+
+ namespace node_kerberos {
+
++#if !defined(__NetBSD__)
+ const char* krb5_get_err_text(const krb5_context&, krb5_error_code code);
++#endif
+
+ #define AUTH_GSS_ERROR -1
+ #define AUTH_GSS_COMPLETE 1
Home |
Main Index |
Thread Index |
Old Index