gssproxy: try to pretty-print a gssx_OID. master-gssproxy
authorGünther Deschner <gd@samba.org>
Tue, 19 Mar 2013 22:13:07 +0000 (23:13 +0100)
committerGünther Deschner <gd@samba.org>
Tue, 9 Apr 2024 10:26:28 +0000 (12:26 +0200)
Guenther

librpc/idl/gssproxy.idl
librpc/ndr/ndr_gssproxy.c
librpc/wscript_build

index 19b6cb0937c0035f73785ae86ce895eb8546051d..2f4130376efb42c2e82cb06e2a1a12d855925552 100644 (file)
@@ -1,6 +1,5 @@
 cpp_quote("#define gssx_uint64 hyper")
 cpp_quote("#define gssx_buffer octet_string")
-cpp_quote("#define gssx_OID octet_string")
 
 
 /*
@@ -20,7 +19,6 @@ cpp_quote("#define gssx_OID octet_string")
 #define gssx_qop hyper
 #define gssx_time hyper
 #define gssx_buffer octet_string
-#define gssx_OID octet_string
 #define bool int
 
 #define GSSX_DECLARE_ARRAY(el_struct, el_name) \
@@ -129,6 +127,11 @@ cpp_quote("#define gssx_OID octet_string")
                char utf8string_val[utf8string_len];
        } utf8string;
 
+       typedef [noprint] struct {
+               uint32 octet_string_len;
+               char octet_string_val[octet_string_len];
+       } gssx_OID;
+
        typedef struct {
                uint32 gssx_OID_set_len;
                gssx_OID gssx_OID_set_val[gssx_OID_set_len];
index b2a8a76369b57ad7f6bc51a7b17f8470369a29f9..a99300a6c55f18acc9422a27d3dbe31346d1df6c 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "../librpc/gen_ndr/ndr_gssproxy.h"
+#include <gssapi.h>
 
 _PUBLIC_ void ndr_print_octet_string(struct ndr_print *ndr, const char *name, const struct octet_string *r)
 {
@@ -42,3 +43,17 @@ _PUBLIC_ void ndr_print_utf8string(struct ndr_print *ndr, const char *name, cons
        ndr_print_string(ndr, "utf8string_val", (char *)r->utf8string_val);
        ndr->depth--;
 }
+
+_PUBLIC_ void ndr_print_gssx_OID(struct ndr_print *ndr, const char *name, const struct gssx_OID *r)
+{
+       gss_OID_desc oid;
+       OM_uint32 maj,min;
+       gss_buffer_desc s = {0};
+       if (r == NULL) { ndr_print_null(ndr); return; }
+       oid.length = r->octet_string_len;
+       oid.elements = (void *)r->octet_string_val;
+       maj = gss_oid_to_str(&min, &oid, &s);
+       if (maj) { return; }
+       ndr->print(ndr, "%-25s: %s", name, (char *)s.value);
+       (void)gss_release_buffer(&min, &s);
+}
index 323a5987f46bc48f4f1f590d5ce2ab297ab94989..2d6f949fe5584fc25f1a028bac7b8201435b79c5 100644 (file)
@@ -486,7 +486,7 @@ bld.SAMBA_SUBSYSTEM('NDR_WINSTATION',
 bld.SAMBA_LIBRARY('ndr-gssproxy',
     source='gen_ndr/ndr_gssproxy.c ndr/ndr_gssproxy.c',
     public_headers='gen_ndr/gssproxy.h gen_ndr/ndr_gssproxy.h',
-    public_deps='ndr',
+    public_deps='ndr gssapi',
     header_path='gen_ndr',
     pc_files='ndr_gssproxy.pc',
     vnum='0.0.1'