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