Coverage Report

Created: 2026-05-14 06:28

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wireshark/epan/dissectors/packet-yppasswd.c
Line
Count
Source
1
/* packet-yppasswd.c
2
 * Routines for yppasswd dissection
3
 *
4
 * Wireshark - Network traffic analyzer
5
 * By Gerald Combs <gerald@wireshark.org>
6
 * Copyright 1998 Gerald Combs
7
 *
8
 * SPDX-License-Identifier: GPL-2.0-or-later
9
 */
10
11
#include "config.h"
12
13
#include "packet-rpc.h"
14
#include "packet-yppasswd.h"
15
16
void proto_register_yppasswd(void);
17
void proto_reg_handoff_yppasswd(void);
18
19
static int proto_yppasswd;
20
static int hf_yppasswd_procedure_v1;
21
static int hf_yppasswd_status;
22
static int hf_yppasswd_oldpass;
23
static int hf_yppasswd_newpw;
24
static int hf_yppasswd_newpw_name;
25
static int hf_yppasswd_newpw_passwd;
26
static int hf_yppasswd_newpw_uid;
27
static int hf_yppasswd_newpw_gid;
28
static int hf_yppasswd_newpw_gecos;
29
static int hf_yppasswd_newpw_dir;
30
static int hf_yppasswd_newpw_shell;
31
32
static int ett_yppasswd;
33
static int ett_yppasswd_newpw;
34
35
static int
36
dissect_yppasswd_call(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
37
0
{
38
0
  proto_item *lock_item = NULL;
39
0
  proto_tree *lock_tree = NULL;
40
0
  int offset = 0;
41
42
0
  offset = dissect_rpc_string(tvb, pinfo, tree, hf_yppasswd_oldpass,
43
0
      offset, NULL);
44
45
0
  lock_item = proto_tree_add_item(tree, hf_yppasswd_newpw, tvb,
46
0
      offset, -1, ENC_NA);
47
48
0
  lock_tree = proto_item_add_subtree(lock_item, ett_yppasswd_newpw);
49
50
0
  offset = dissect_rpc_string(tvb, pinfo, lock_tree,
51
0
      hf_yppasswd_newpw_name, offset, NULL);
52
0
  offset = dissect_rpc_string(tvb, pinfo, lock_tree,
53
0
      hf_yppasswd_newpw_passwd, offset, NULL);
54
0
  offset = dissect_rpc_uint32(tvb, lock_tree,
55
0
      hf_yppasswd_newpw_uid, offset);
56
0
  offset = dissect_rpc_uint32(tvb, lock_tree,
57
0
      hf_yppasswd_newpw_gid, offset);
58
0
  offset = dissect_rpc_string(tvb, pinfo, lock_tree,
59
0
      hf_yppasswd_newpw_gecos, offset, NULL);
60
0
  offset = dissect_rpc_string(tvb, pinfo, lock_tree,
61
0
      hf_yppasswd_newpw_dir, offset, NULL);
62
0
  offset = dissect_rpc_string(tvb, pinfo, lock_tree,
63
0
      hf_yppasswd_newpw_shell, offset, NULL);
64
65
0
  return offset;
66
0
}
67
68
static int
69
dissect_yppasswd_reply(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
70
0
{
71
0
  return dissect_rpc_uint32(tvb, tree, hf_yppasswd_status, 0);
72
0
}
73
74
/* proc number, "proc name", dissect_request, dissect_reply */
75
static const vsff yppasswd1_proc[] = {
76
  { YPPASSWDPROC_NULL,  "NULL",
77
    dissect_rpc_void, dissect_rpc_void },
78
  { YPPASSWDPROC_UPDATE,  "UPDATE",
79
    dissect_yppasswd_call,  dissect_yppasswd_reply },
80
  { 0,  NULL,   NULL,       NULL }
81
};
82
static const value_string yppasswd1_proc_vals[] = {
83
  { YPPASSWDPROC_NULL,  "NULL" },
84
  { YPPASSWDPROC_UPDATE,  "UPDATE" },
85
  { 0,  NULL }
86
};
87
88
static const rpc_prog_vers_info yppasswd_vers_info[] = {
89
  { 1, yppasswd1_proc, &hf_yppasswd_procedure_v1 },
90
};
91
92
void
93
proto_register_yppasswd(void)
94
15
{
95
15
  static hf_register_info hf[] = {
96
15
    { &hf_yppasswd_procedure_v1, {
97
15
      "V1 Procedure", "yppasswd.procedure_v1", FT_UINT32, BASE_DEC,
98
15
      VALS(yppasswd1_proc_vals), 0, NULL, HFILL }},
99
15
    { &hf_yppasswd_status, {
100
15
      "status", "yppasswd.status", FT_UINT32, BASE_DEC,
101
15
      NULL, 0, "YPPasswd update status", HFILL }},
102
103
15
    { &hf_yppasswd_oldpass, {
104
15
      "oldpass", "yppasswd.oldpass", FT_STRING, BASE_NONE,
105
15
      NULL, 0, "Old encrypted password", HFILL }},
106
107
15
    { &hf_yppasswd_newpw, {
108
15
      "newpw", "yppasswd.newpw", FT_NONE, BASE_NONE,
109
15
      NULL, 0, "New passwd entry", HFILL }},
110
111
15
    { &hf_yppasswd_newpw_name, {
112
15
      "name", "yppasswd.newpw.name", FT_STRING, BASE_NONE,
113
15
      NULL, 0, "Username", HFILL }},
114
115
15
    { &hf_yppasswd_newpw_passwd, {
116
15
      "passwd", "yppasswd.newpw.passwd", FT_STRING, BASE_NONE,
117
15
      NULL, 0, "Encrypted passwd", HFILL }},
118
119
15
    { &hf_yppasswd_newpw_uid, {
120
15
      "uid", "yppasswd.newpw.uid", FT_UINT32, BASE_DEC,
121
15
      NULL, 0, "UserID", HFILL }},
122
123
15
    { &hf_yppasswd_newpw_gid, {
124
15
      "gid", "yppasswd.newpw.gid", FT_UINT32, BASE_DEC,
125
15
      NULL, 0, "GroupID", HFILL }},
126
127
15
    { &hf_yppasswd_newpw_gecos, {
128
15
      "gecos", "yppasswd.newpw.gecos", FT_STRING, BASE_NONE,
129
15
      NULL, 0, "In real life name", HFILL }},
130
131
15
    { &hf_yppasswd_newpw_dir, {
132
15
      "dir", "yppasswd.newpw.dir", FT_STRING, BASE_NONE,
133
15
      NULL, 0, "Home Directory", HFILL }},
134
135
15
    { &hf_yppasswd_newpw_shell, {
136
15
      "shell", "yppasswd.newpw.shell", FT_STRING, BASE_NONE,
137
15
      NULL, 0, "Default shell", HFILL }},
138
139
15
  };
140
141
15
  static int *ett[] = {
142
15
    &ett_yppasswd,
143
15
    &ett_yppasswd_newpw,
144
15
  };
145
146
15
  proto_yppasswd = proto_register_protocol("Yellow Pages Passwd",
147
15
      "YPPASSWD", "yppasswd");
148
15
  proto_register_field_array(proto_yppasswd, hf, array_length(hf));
149
15
  proto_register_subtree_array(ett, array_length(ett));
150
15
}
151
152
void
153
proto_reg_handoff_yppasswd(void)
154
15
{
155
  /* Register the protocol as RPC */
156
15
  rpc_init_prog(proto_yppasswd, YPPASSWD_PROGRAM, ett_yppasswd,
157
      G_N_ELEMENTS(yppasswd_vers_info), yppasswd_vers_info);
158
15
}
159
160
/*
161
 * Editor modelines  -  https://www.wireshark.org/tools/modelines.html
162
 *
163
 * Local variables:
164
 * c-basic-offset: 8
165
 * tab-width: 8
166
 * indent-tabs-mode: t
167
 * End:
168
 *
169
 * vi: set shiftwidth=8 tabstop=8 noexpandtab:
170
 * :indentSize=8:tabSize=8:noTabs=false:
171
 */