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 }