Coverage Report

Created: 2026-05-24 06:47

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/samba/librpc/ndr/ndr_schannel.c
Line
Count
Source
1
/*
2
   Unix SMB/CIFS implementation.
3
4
   routines for marshalling/unmarshalling special schannel structures
5
6
   Copyright (C) Guenther Deschner 2009
7
8
   This program is free software; you can redistribute it and/or modify
9
   it under the terms of the GNU General Public License as published by
10
   the Free Software Foundation; either version 3 of the License, or
11
   (at your option) any later version.
12
13
   This program is distributed in the hope that it will be useful,
14
   but WITHOUT ANY WARRANTY; without even the implied warranty of
15
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
   GNU General Public License for more details.
17
18
   You should have received a copy of the GNU General Public License
19
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
*/
21
22
#include "includes.h"
23
#include "../librpc/gen_ndr/ndr_schannel.h"
24
#include "../librpc/ndr/ndr_schannel.h"
25
#include "../libcli/nbt/libnbt.h"
26
27
_PUBLIC_ void ndr_print_NL_AUTH_MESSAGE_BUFFER(struct ndr_print *ndr, const char *name, const union NL_AUTH_MESSAGE_BUFFER *r)
28
2.67k
{
29
2.67k
  int level;
30
2.67k
  level = ndr_print_steal_switch_value(ndr, r);
31
2.67k
  switch (level) {
32
305
    case NL_FLAG_OEM_NETBIOS_DOMAIN_NAME:
33
305
      ndr_print_string(ndr, name, r->a);
34
305
    break;
35
36
180
    case NL_FLAG_OEM_NETBIOS_COMPUTER_NAME:
37
180
      ndr_print_string(ndr, name, r->a);
38
180
    break;
39
40
268
    case NL_FLAG_UTF8_DNS_DOMAIN_NAME:
41
268
      ndr_print_nbt_string(ndr, name, r->u);
42
268
    break;
43
44
143
    case NL_FLAG_UTF8_DNS_HOST_NAME:
45
143
      ndr_print_nbt_string(ndr, name, r->u);
46
143
    break;
47
48
215
    case NL_FLAG_UTF8_NETBIOS_COMPUTER_NAME:
49
215
      ndr_print_nbt_string(ndr, name, r->u);
50
215
    break;
51
52
1.55k
    default:
53
1.55k
    break;
54
55
2.67k
  }
56
2.67k
}
57
58
_PUBLIC_ void ndr_print_NL_AUTH_MESSAGE_BUFFER_REPLY(struct ndr_print *ndr, const char *name, const union NL_AUTH_MESSAGE_BUFFER_REPLY *r)
59
534
{
60
534
  int level;
61
534
  level = ndr_print_steal_switch_value(ndr, r);
62
534
  switch (level) {
63
26
    case NL_NEGOTIATE_RESPONSE:
64
26
      ndr_print_uint32(ndr, name, r->dummy);
65
26
    break;
66
67
508
    default:
68
508
    break;
69
70
534
  }
71
534
}
72
73
void dump_NL_AUTH_SIGNATURE(TALLOC_CTX *mem_ctx,
74
          const DATA_BLOB *blob)
75
0
{
76
0
  enum ndr_err_code ndr_err;
77
0
  uint16_t signature_algorithm;
78
79
0
  if (blob->length < 2) {
80
0
    return;
81
0
  }
82
83
0
  signature_algorithm = SVAL(blob->data, 0);
84
85
0
  switch (signature_algorithm) {
86
0
  case NL_SIGN_HMAC_MD5: {
87
0
    struct NL_AUTH_SIGNATURE r;
88
0
    ndr_err = ndr_pull_struct_blob(blob, mem_ctx, &r,
89
0
           (ndr_pull_flags_fn_t)ndr_pull_NL_AUTH_SIGNATURE);
90
0
    if (NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
91
0
      NDR_PRINT_DEBUG(NL_AUTH_SIGNATURE, &r);
92
0
    }
93
0
    break;
94
0
  }
95
0
  case NL_SIGN_HMAC_SHA256: {
96
0
    struct NL_AUTH_SHA2_SIGNATURE r;
97
0
    ndr_err = ndr_pull_struct_blob(blob, mem_ctx, &r,
98
0
           (ndr_pull_flags_fn_t)ndr_pull_NL_AUTH_SHA2_SIGNATURE);
99
0
    if (NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
100
0
      NDR_PRINT_DEBUG(NL_AUTH_SHA2_SIGNATURE, &r);
101
0
    }
102
0
    break;
103
0
  }
104
0
  default:
105
0
    break;
106
0
  }
107
0
}