Apache HTTPD
framework
httpd-2.4.62
srclib
apr
user
win32
groupinfo.c
Go to the documentation of this file.
1
/* Licensed to the Apache Software Foundation (ASF) under one or more
2
* contributor license agreements. See the NOTICE file distributed with
3
* this work for additional information regarding copyright ownership.
4
* The ASF licenses this file to You under the Apache License, Version 2.0
5
* (the "License"); you may not use this file except in compliance with
6
* the License. You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*/
16
17
#include "
apr_strings.h
"
18
#include "
apr_portable.h
"
19
#include "
apr_user.h
"
20
#include "apr_private.h"
21
#if APR_HAVE_SYS_TYPES_H
22
#include <sys/types.h>
23
#endif
24
25
APR_DECLARE
(
apr_status_t
)
apr_gid_get
(
apr_gid_t
*
gid
,
26
const
char
*
groupname
,
apr_pool_t
*
p
)
27
{
28
#ifdef _WIN32_WCE
29
return
APR_ENOTIMPL
;
30
#else
31
SID_NAME_USE
sidtype
;
32
char
anydomain
[256];
33
char
*domain;
34
DWORD
sidlen
= 0;
35
DWORD
domlen
=
sizeof
(
anydomain
);
36
DWORD
rv;
37
char
*pos;
38
39
if
((pos =
strchr
(
groupname
,
'/'
))) {
40
domain =
apr_pstrmemdup
(
p
,
groupname
, pos -
groupname
);
41
groupname
= pos + 1;
42
}
43
else
if
((pos =
strchr
(
groupname
,
'\\'
))) {
44
domain =
apr_pstrmemdup
(
p
,
groupname
, pos -
groupname
);
45
groupname
= pos + 1;
46
}
47
else
{
48
domain =
NULL
;
49
}
50
/* Get nothing on the first pass ... need to size the sid buffer
51
*/
52
rv =
LookupAccountName
(domain,
groupname
, domain, &
sidlen
,
53
anydomain
, &
domlen
, &
sidtype
);
54
if
(
sidlen
) {
55
/* Give it back on the second pass
56
*/
57
*
gid
=
apr_palloc
(
p
,
sidlen
);
58
domlen
=
sizeof
(
anydomain
);
59
rv =
LookupAccountName
(domain,
groupname
, *
gid
, &
sidlen
,
60
anydomain
, &
domlen
, &
sidtype
);
61
}
62
if
(!
sidlen
|| !rv) {
63
return
apr_get_os_error
();
64
}
65
return
APR_SUCCESS
;
66
#endif
67
}
68
69
APR_DECLARE
(
apr_status_t
)
apr_gid_name_get
(
char
**
groupname
,
apr_gid_t
groupid
,
apr_pool_t
*
p
)
70
{
71
#ifdef _WIN32_WCE
72
*
groupname
=
apr_pstrdup
(
p
,
"Administrators"
);
73
#else
74
SID_NAME_USE
type
;
75
char
name
[
MAX_PATH
], domain[
MAX_PATH
];
76
DWORD
cbname
=
sizeof
(
name
),
cbdomain
=
sizeof
(domain);
77
if
(!
groupid
)
78
return
APR_EINVAL
;
79
if
(!
LookupAccountSid
(
NULL
,
groupid
,
name
, &
cbname
, domain, &
cbdomain
, &
type
))
80
return
apr_get_os_error
();
81
if
(
type
!=
SidTypeGroup
&&
type
!=
SidTypeWellKnownGroup
82
&&
type
!=
SidTypeAlias
)
83
return
APR_EINVAL
;
84
*
groupname
=
apr_pstrdup
(
p
,
name
);
85
#endif
86
return
APR_SUCCESS
;
87
}
88
89
APR_DECLARE
(
apr_status_t
)
apr_gid_compare
(
apr_gid_t
left,
apr_gid_t
right)
90
{
91
if
(!left || !right)
92
return
APR_EINVAL
;
93
#ifndef _WIN32_WCE
94
if
(!
IsValidSid
(left) || !
IsValidSid
(right))
95
return
APR_EINVAL
;
96
if
(!
EqualSid
(left, right))
97
return
APR_EMISMATCH
;
98
#endif
99
return
APR_SUCCESS
;
100
}
apr_portable.h
APR Portability Routines.
apr_strings.h
APR Strings library.
apr_user.h
APR User ID Services.
APR_EMISMATCH
#define APR_EMISMATCH
Definition
apr_errno.h:478
APR_ENOTIMPL
#define APR_ENOTIMPL
Definition
apr_errno.h:476
APR_EINVAL
#define APR_EINVAL
Definition
apr_errno.h:711
gid
apr_fileperms_t apr_uid_t apr_gid_t gid
Definition
apr_global_mutex.h:159
APR_DECLARE
const void apr_status_t(*) apr_status_t(* APR_DECLARE)(void) apr_pool_pre_cleanup_register(apr_pool_t *p
Definition
apr_pools.h:646
size
apr_size_t size
Definition
apr_allocator.h:115
APR_SUCCESS
#define APR_SUCCESS
Definition
apr_errno.h:225
apr_get_os_error
#define apr_get_os_error()
Definition
apr_errno.h:1217
apr_status_t
int apr_status_t
Definition
apr_errno.h:44
type
int type
Definition
apr_file_io.h:798
groupname
const char * groupname
Definition
apr_thread_proc.h:580
apr_gid_t
gid_t apr_gid_t
Definition
apr_user.h:54
p
apr_pool_t * p
Definition
md_event.c:32
NULL
return NULL
Definition
mod_so.c:359
name
char * name
Definition
ssl_engine_vars.c:563
apr_pool_t
Definition
apr_pools.c:562
DWORD
typedef DWORD(WINAPI *apr_winapi_fpt_GetCompressedFileSizeA)(IN LPCSTR lpFileName
Generated by
1.9.8