#include "libmsrpc_internal.h"
/*used to get a struct rpc_pipe_client* to be passed into rpccli* calls*/
-struct rpc_pipe_client *cac_GetPipe(CacServerHandle *hnd, int pi_idx) {
- SMBCSRV *srv = NULL;
- struct rpc_pipe_client *pipe_hnd = NULL;
+struct rpc_pipe_client *cac_GetPipe(CacServerHandle *hnd, int pi_idx)
+{
+ SMBCSRV *srv = NULL;
+ struct rpc_pipe_client *pipe_hnd = NULL;
- if(!hnd)
- return NULL;
+ if(!hnd) {
+ return NULL;
+ }
- if(hnd->_internal.pipes[pi_idx] == False) {
- hnd->status = NT_STATUS_INVALID_HANDLE;
- return NULL;
- }
+ if(hnd->_internal.pipes[pi_idx] == False) {
+ hnd->status = NT_STATUS_INVALID_HANDLE;
+ return NULL;
+ }
- srv = cac_GetServer(hnd);
- if(!srv) {
- hnd->status = NT_STATUS_INVALID_CONNECTION;
- return NULL;
- }
+ srv = cac_GetServer(hnd);
+ if(!srv) {
+ hnd->status = NT_STATUS_INVALID_CONNECTION;
+ return NULL;
+ }
- pipe_hnd = srv->cli.pipe_list;
+ pipe_hnd = srv->cli->pipe_list;
- while(pipe_hnd != NULL && pipe_hnd->pipe_idx != pi_idx)
- pipe_hnd = pipe_hnd->next;
+ while(pipe_hnd != NULL && pipe_hnd->pipe_idx != pi_idx) {
+ pipe_hnd = pipe_hnd->next;
+ }
- return pipe_hnd;
+ return pipe_hnd;
}
/*takes a string like HKEY_LOCAL_MACHINE\HARDWARE\ACPI and returns the reg_type code and then a pointer to the start of the path (HARDWARE)*/
RPC_DATA_BLOB *blob = NULL;
int i;
uint32 size = 0;
- uint32 len = 0;
uint8 *multi = NULL;
uint32 multi_idx = 0;
/*do it using rpcstr_push()*/
multi_idx = 0;
for(i = 0; i < data.reg_multi_sz.num_strings; i++) {
- len = strlen(data.reg_multi_sz.strings[i]) + 1;
+ size_t len = strlen(data.reg_multi_sz.strings[i]) + 1;
rpcstr_push((multi + multi_idx), data.reg_multi_sz.strings[i], len * 2, STR_TERMINATE);
SAM_USERINFO_CTR *ctr = NULL;
/*the flags we are 'setting'- include/passdb.h*/
- uint32 flags = ACCT_USERNAME | ACCT_FULL_NAME | ACCT_PRIMARY_GID | ACCT_ADMIN_DESC | ACCT_DESCRIPTION |
+ uint32 flags = ACCT_USERNAME | ACCT_FULL_NAME | ACCT_PRIMARY_GID | ACCT_DESCRIPTION | ACCT_COMMENT |
ACCT_HOME_DIR | ACCT_HOME_DRIVE | ACCT_LOGON_SCRIPT | ACCT_PROFILE | ACCT_WORKSTATIONS |
ACCT_FLAGS;
unix_to_nt_time(&pass_must_change_time, info->pass_must_change_time);
/*initialize the strings*/
- init_unistr2(&user_name, info->username, STR_TERMINATE);
- init_unistr2(&full_name, info->full_name, STR_TERMINATE);
- init_unistr2(&home_dir, info->home_dir, STR_TERMINATE);
- init_unistr2(&dir_drive, info->home_drive, STR_TERMINATE);
- init_unistr2(&log_scr, info->logon_script, STR_TERMINATE);
- init_unistr2(&prof_path, info->profile_path, STR_TERMINATE);
- init_unistr2(&desc, info->description, STR_TERMINATE);
- init_unistr2(&wkstas, info->workstations, STR_TERMINATE);
- init_unistr2(&unk, "\0", STR_TERMINATE);
- init_unistr2(&mung_dial, info->dial, STR_TERMINATE);
+ init_unistr2(&user_name, info->username, UNI_STR_TERMINATE);
+ init_unistr2(&full_name, info->full_name, UNI_STR_TERMINATE);
+ init_unistr2(&home_dir, info->home_dir, UNI_STR_TERMINATE);
+ init_unistr2(&dir_drive, info->home_drive, UNI_STR_TERMINATE);
+ init_unistr2(&log_scr, info->logon_script, UNI_STR_TERMINATE);
+ init_unistr2(&prof_path, info->profile_path, UNI_STR_TERMINATE);
+ init_unistr2(&desc, info->description, UNI_STR_TERMINATE);
+ init_unistr2(&wkstas, info->workstations, UNI_STR_TERMINATE);
+ init_unistr2(&unk, "\0", UNI_STR_TERMINATE);
+ init_unistr2(&mung_dial, info->dial, UNI_STR_TERMINATE);
/*manually set passmustchange*/
ctr->info.id21->passmustchange = (info->pass_must_change) ? 0x01 : 0x00;