ntlmssp: add ndr_print_ntlmssp_{nt,lm}_response() function.
authorGünther Deschner <gd@samba.org>
Fri, 21 Aug 2009 18:41:03 +0000 (20:41 +0200)
committerGünther Deschner <gd@samba.org>
Fri, 28 Aug 2009 08:08:43 +0000 (10:08 +0200)
Guenther

librpc/ndr/ndr_ntlmssp.c
librpc/ndr/ndr_ntlmssp.h

index b91b1433e216ebe2e53715e0da8c64c25a829fe2..d90495fe9b580aa63460d380b45989154a5b7a77 100644 (file)
@@ -107,3 +107,59 @@ _PUBLIC_ enum ndr_err_code ndr_pull_AV_PAIR_LIST(struct ndr_pull *ndr, int ndr_f
        }
        return NDR_ERR_SUCCESS;
 }
+
+_PUBLIC_ void ndr_print_ntlmssp_nt_response(TALLOC_CTX *mem_ctx,
+                                           struct smb_iconv_convenience *ic,
+                                           const DATA_BLOB *nt_response,
+                                           bool ntlmv2)
+{
+       enum ndr_err_code ndr_err;
+
+       if (ntlmv2) {
+               struct NTLMv2_RESPONSE nt;
+               if (nt_response->length > 24) {
+                       ndr_err = ndr_pull_struct_blob(nt_response, mem_ctx, ic, &nt,
+                                       (ndr_pull_flags_fn_t)ndr_pull_NTLMv2_RESPONSE);
+                       if (NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+                               NDR_PRINT_DEBUG(NTLMv2_RESPONSE, &nt);
+                       }
+               }
+       } else {
+               struct NTLM_RESPONSE nt;
+               if (nt_response->length == 24) {
+                       ndr_err = ndr_pull_struct_blob(nt_response, mem_ctx, ic, &nt,
+                                       (ndr_pull_flags_fn_t)ndr_pull_NTLM_RESPONSE);
+                       if (NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+                               NDR_PRINT_DEBUG(NTLM_RESPONSE, &nt);
+                       }
+               }
+       }
+}
+
+_PUBLIC_ void ndr_print_ntlmssp_lm_response(TALLOC_CTX *mem_ctx,
+                                           struct smb_iconv_convenience *ic,
+                                           const DATA_BLOB *lm_response,
+                                           bool ntlmv2)
+{
+       enum ndr_err_code ndr_err;
+
+       if (ntlmv2) {
+               struct LMv2_RESPONSE lm;
+               if (lm_response->length == 24) {
+                       ndr_err = ndr_pull_struct_blob(lm_response, mem_ctx, ic, &lm,
+                                       (ndr_pull_flags_fn_t)ndr_pull_LMv2_RESPONSE);
+                       if (NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+                               NDR_PRINT_DEBUG(LMv2_RESPONSE, &lm);
+                       }
+               }
+       } else {
+               struct LM_RESPONSE lm;
+               if (lm_response->length == 24) {
+                       ndr_err = ndr_pull_struct_blob(lm_response, mem_ctx, ic, &lm,
+                                       (ndr_pull_flags_fn_t)ndr_pull_LM_RESPONSE);
+                       if (NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+                               NDR_PRINT_DEBUG(LM_RESPONSE, &lm);
+                       }
+               }
+       }
+}
index 4b21b4fa10a31af68d497c00137f4e5ce322ede4..6d76be20ca2fca41d2fd610c9cbfecb30258fe0e 100644 (file)
@@ -23,3 +23,11 @@ _PUBLIC_ size_t ndr_ntlmssp_string_length(uint32_t negotiate_flags, const char *
 _PUBLIC_ uint32_t ndr_ntlmssp_negotiated_string_flags(uint32_t negotiate_flags);
 _PUBLIC_ enum ndr_err_code ndr_push_AV_PAIR_LIST(struct ndr_push *ndr, int ndr_flags, const struct AV_PAIR_LIST *r);
 _PUBLIC_ enum ndr_err_code ndr_pull_AV_PAIR_LIST(struct ndr_pull *ndr, int ndr_flags, struct AV_PAIR_LIST *r);
+_PUBLIC_ void ndr_print_ntlmssp_nt_response(TALLOC_CTX *mem_ctx,
+                                           struct smb_iconv_convenience *ic,
+                                           const DATA_BLOB *nt_response,
+                                           bool ntlmv2);
+_PUBLIC_ void ndr_print_ntlmssp_lm_response(TALLOC_CTX *mem_ctx,
+                                           struct smb_iconv_convenience *ic,
+                                           const DATA_BLOB *lm_response,
+                                           bool ntlmv2);