Mercurial > illumos > illumos-gate
comparison usr/src/lib/smbsrv/libmlsvc/common/samlib.c @ 10717:fe0545fc3cdd
6612607 CIFS ADS client should use ldap_sasl_interactive_bind_s API
6877755 smbd should not route stderr, stdout to /dev/null
6882701 Wrong error message for attempt to map local user to Windows group, or vice versa
6885105 Potential for deadlock in smb_node_set_delete_on_close()
6881928 smbd core generated when running a script to join domain, set abe properties
6885538 Reduce dependencies on libsmbrdr
6820325 cifs service can't start on multi vlan+ipmp configuration
author | Alan Wright <amw@Sun.COM> |
---|---|
date | Mon, 05 Oct 2009 11:03:34 -0700 |
parents | ee04788f8605 |
children | 37e5dcdf36d3 |
comparison
equal
deleted
inserted
replaced
10716:b17df522be57 | 10717:fe0545fc3cdd |
---|---|
29 */ | 29 */ |
30 | 30 |
31 #include <alloca.h> | 31 #include <alloca.h> |
32 | 32 |
33 #include <smbsrv/libsmb.h> | 33 #include <smbsrv/libsmb.h> |
34 #include <smbsrv/libsmbrdr.h> | |
35 #include <smbsrv/libmlsvc.h> | 34 #include <smbsrv/libmlsvc.h> |
36 | 35 |
37 #include <smbsrv/ntstatus.h> | 36 #include <smbsrv/ntstatus.h> |
38 #include <smbsrv/ntaccess.h> | 37 #include <smbsrv/ntaccess.h> |
39 #include <lsalib.h> | 38 #include <lsalib.h> |
112 union samr_user_info sui; | 111 union samr_user_info sui; |
113 struct samr_sid *sid; | 112 struct samr_sid *sid; |
114 DWORD rid; | 113 DWORD rid; |
115 DWORD status; | 114 DWORD status; |
116 int rc; | 115 int rc; |
117 char *user = smbrdr_ipc_get_user(); | 116 char user[SMB_USERNAME_MAXLEN]; |
117 | |
118 smb_ipc_get_user(user, SMB_USERNAME_MAXLEN); | |
118 | 119 |
119 rc = samr_open(server, domain_name, user, SAM_CONNECT_CREATE_ACCOUNT, | 120 rc = samr_open(server, domain_name, user, SAM_CONNECT_CREATE_ACCOUNT, |
120 &samr_handle); | 121 &samr_handle); |
121 | 122 |
122 if (rc != 0) { | 123 if (rc != 0) { |
197 smb_account_t ainfo; | 198 smb_account_t ainfo; |
198 struct samr_sid *sid; | 199 struct samr_sid *sid; |
199 DWORD access_mask; | 200 DWORD access_mask; |
200 DWORD status; | 201 DWORD status; |
201 int rc; | 202 int rc; |
202 char *user = smbrdr_ipc_get_user(); | 203 char user[SMB_USERNAME_MAXLEN]; |
204 | |
205 smb_ipc_get_user(user, SMB_USERNAME_MAXLEN); | |
203 | 206 |
204 rc = samr_open(server, domain_name, user, SAM_LOOKUP_INFORMATION, | 207 rc = samr_open(server, domain_name, user, SAM_LOOKUP_INFORMATION, |
205 &samr_handle); | 208 &samr_handle); |
206 | 209 |
207 if (rc != 0) | 210 if (rc != 0) |
248 smb_account_t ainfo; | 251 smb_account_t ainfo; |
249 struct samr_sid *sid; | 252 struct samr_sid *sid; |
250 DWORD access_mask; | 253 DWORD access_mask; |
251 DWORD status; | 254 DWORD status; |
252 int rc; | 255 int rc; |
253 char *user = smbrdr_ipc_get_user(); | 256 char user[SMB_USERNAME_MAXLEN]; |
257 | |
258 smb_ipc_get_user(user, SMB_USERNAME_MAXLEN); | |
254 | 259 |
255 rc = samr_open(server, domain_name, user, SAM_LOOKUP_INFORMATION, | 260 rc = samr_open(server, domain_name, user, SAM_LOOKUP_INFORMATION, |
256 &samr_handle); | 261 &samr_handle); |
257 | 262 |
258 if (rc != 0) | 263 if (rc != 0) |
304 mlsvc_handle_t domain_handle; | 309 mlsvc_handle_t domain_handle; |
305 smb_account_t ainfo; | 310 smb_account_t ainfo; |
306 struct samr_sid *domain_sid; | 311 struct samr_sid *domain_sid; |
307 int rc; | 312 int rc; |
308 DWORD status; | 313 DWORD status; |
309 char *user = smbrdr_ipc_get_user(); | 314 char user[SMB_USERNAME_MAXLEN]; |
315 | |
316 smb_ipc_get_user(user, SMB_USERNAME_MAXLEN); | |
310 | 317 |
311 *rid_ret = 0; | 318 *rid_ret = 0; |
312 | 319 |
313 rc = samr_open(server, domain_name, user, SAM_LOOKUP_INFORMATION, | 320 rc = samr_open(server, domain_name, user, SAM_LOOKUP_INFORMATION, |
314 &samr_handle); | 321 &samr_handle); |
350 sam_get_local_domains(char *server, char *domain_name) | 357 sam_get_local_domains(char *server, char *domain_name) |
351 { | 358 { |
352 mlsvc_handle_t samr_handle; | 359 mlsvc_handle_t samr_handle; |
353 DWORD status; | 360 DWORD status; |
354 int rc; | 361 int rc; |
355 char *user = smbrdr_ipc_get_user(); | 362 char user[SMB_USERNAME_MAXLEN]; |
363 | |
364 smb_ipc_get_user(user, SMB_USERNAME_MAXLEN); | |
356 | 365 |
357 rc = samr_open(server, domain_name, user, SAM_ENUM_LOCAL_DOMAIN, | 366 rc = samr_open(server, domain_name, user, SAM_ENUM_LOCAL_DOMAIN, |
358 &samr_handle); | 367 &samr_handle); |
359 if (rc != 0) | 368 if (rc != 0) |
360 return (NT_STATUS_OPEN_FAILED); | 369 return (NT_STATUS_OPEN_FAILED); |
397 } | 406 } |
398 | 407 |
399 static struct samr_sid * | 408 static struct samr_sid * |
400 sam_get_domain_sid(mlsvc_handle_t *samr_handle, char *server, char *domain_name) | 409 sam_get_domain_sid(mlsvc_handle_t *samr_handle, char *server, char *domain_name) |
401 { | 410 { |
402 struct samr_sid *sid = NULL; | 411 smb_sid_t *sid = NULL; |
403 smb_domain_t domain; | 412 smb_domainex_t domain; |
404 | 413 |
405 if (ndr_rpc_server_os(samr_handle) == NATIVE_OS_WIN2000) { | 414 if (ndr_rpc_server_os(samr_handle) == NATIVE_OS_WIN2000) { |
406 if (!smb_domain_getinfo(&domain)) { | 415 if (!smb_domain_getinfo(&domain)) { |
407 if (lsa_query_account_domain_info(server, domain_name, | 416 if (lsa_query_account_domain_info(server, domain_name, |
408 &domain.d_info) != NT_STATUS_SUCCESS) | 417 &domain.d_primary) != NT_STATUS_SUCCESS) |
409 return (NULL); | 418 return (NULL); |
410 } | 419 } |
411 | 420 |
412 sid = (struct samr_sid *)smb_sid_fromstr(domain.d_info.di_sid); | 421 sid = smb_sid_fromstr(domain.d_primary.di_sid); |
413 } else { | 422 } else { |
414 sid = (struct samr_sid *)samr_lookup_domain(samr_handle, | 423 sid = samr_lookup_domain(samr_handle, domain_name); |
415 domain_name); | 424 } |
416 } | 425 |
417 | 426 return ((struct samr_sid *)sid); |
418 return (sid); | 427 } |
419 } |