source: vendor/current/source3/passdb/pdb_compat.c

Last change on this file was 988, checked in by Silvan Scherrer, 9 years ago

Samba Server: update vendor to version 4.4.3

File size: 2.7 KB
Line 
1/*
2 Unix SMB/CIFS implementation.
3 struct samu access routines
4 Copyright (C) Jeremy Allison 1996-2001
5 Copyright (C) Luke Kenneth Casson Leighton 1996-1998
6 Copyright (C) Gerald (Jerry) Carter 2000-2001
7 Copyright (C) Andrew Bartlett 2001-2002
8 Copyright (C) Stefan (metze) Metzmacher 2002
9
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 3 of the License, or
13 (at your option) any later version.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program. If not, see <http://www.gnu.org/licenses/>.
22*/
23
24#include "includes.h"
25#include "passdb.h"
26#include "../libcli/security/security.h"
27
28#undef DBGC_CLASS
29#define DBGC_CLASS DBGC_PASSDB
30
31uint32_t pdb_get_user_rid (const struct samu *sampass)
32{
33 uint32_t u_rid;
34
35 if (sampass)
36 if (sid_peek_check_rid(get_global_sam_sid(), pdb_get_user_sid(sampass),&u_rid))
37 return u_rid;
38
39 return (0);
40}
41
42uint32_t pdb_get_group_rid (struct samu *sampass)
43{
44 uint32_t g_rid;
45
46 if (sampass)
47 if (sid_peek_check_rid(get_global_sam_sid(), pdb_get_group_sid(sampass),&g_rid))
48 return g_rid;
49 return (0);
50}
51
52bool pdb_set_user_sid_from_rid (struct samu *sampass, uint32_t rid, enum pdb_value_state flag)
53{
54 struct dom_sid u_sid;
55 const struct dom_sid *global_sam_sid;
56
57 if (!sampass)
58 return False;
59
60 if (!(global_sam_sid = get_global_sam_sid())) {
61 DEBUG(1, ("pdb_set_user_sid_from_rid: Could not read global sam sid!\n"));
62 return False;
63 }
64
65 if (!sid_compose(&u_sid, global_sam_sid, rid)) {
66 return False;
67 }
68
69 if (!pdb_set_user_sid(sampass, &u_sid, flag))
70 return False;
71
72 DEBUG(10, ("pdb_set_user_sid_from_rid:\n\tsetting user sid %s from rid %d\n",
73 sid_string_dbg(&u_sid),rid));
74
75 return True;
76}
77
78bool pdb_set_group_sid_from_rid (struct samu *sampass, uint32_t grid, enum pdb_value_state flag)
79{
80 struct dom_sid g_sid;
81 const struct dom_sid *global_sam_sid;
82
83 if (!sampass)
84 return False;
85
86 if (!(global_sam_sid = get_global_sam_sid())) {
87 DEBUG(1, ("pdb_set_user_sid_from_rid: Could not read global sam sid!\n"));
88 return False;
89 }
90
91 if (!sid_compose(&g_sid, global_sam_sid, grid)) {
92 return False;
93 }
94
95 if (!pdb_set_group_sid(sampass, &g_sid, flag))
96 return False;
97
98 DEBUG(10, ("pdb_set_group_sid_from_rid:\n\tsetting group sid %s from rid %d\n",
99 sid_string_dbg(&g_sid), grid));
100
101 return True;
102}
103
Note: See TracBrowser for help on using the repository browser.