NDR_PRINT_IN_DEBUG(winreg_OpenHKCR, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_OPENHKCR,
NDR_PRINT_IN_DEBUG(winreg_OpenHKCU, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_OPENHKCU,
NDR_PRINT_IN_DEBUG(winreg_OpenHKLM, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_OPENHKLM,
NDR_PRINT_IN_DEBUG(winreg_OpenHKPD, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_OPENHKPD,
NDR_PRINT_IN_DEBUG(winreg_OpenHKU, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_OPENHKU,
NDR_PRINT_IN_DEBUG(winreg_CloseKey, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_CLOSEKEY,
NDR_PRINT_IN_DEBUG(winreg_CreateKey, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_CREATEKEY,
NDR_PRINT_IN_DEBUG(winreg_DeleteKey, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_DELETEKEY,
NDR_PRINT_IN_DEBUG(winreg_DeleteValue, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_DELETEVALUE,
NDR_PRINT_IN_DEBUG(winreg_EnumKey, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_ENUMKEY,
TALLOC_CTX *mem_ctx,
struct policy_handle *handle /* [in] [ref] */,
uint32_t enum_index /* [in] */,
- struct winreg_StringBuf *name /* [in,out] [ref] */,
+ struct winreg_ValNameBuf *name /* [in,out] [ref] */,
enum winreg_Type *type /* [in,out] [unique] */,
uint8_t *value /* [in,out] [unique,length_is(*length),size_is(*size)] */,
uint32_t *size /* [in,out] [unique] */,
NDR_PRINT_IN_DEBUG(winreg_EnumValue, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_ENUMVALUE,
*type = *r.out.type;
}
if (value && r.out.value) {
- memcpy(value, r.out.value, *r.in.size * sizeof(*value));
+ if ((*r.out.size) > (*r.in.size)) {
+ return NT_STATUS_INVALID_NETWORK_RESPONSE;
+ }
+ if ((*r.out.length) > (*r.out.size)) {
+ return NT_STATUS_INVALID_NETWORK_RESPONSE;
+ }
+ memcpy(value, r.out.value, (*r.out.length) * sizeof(*value));
}
if (size && r.out.size) {
*size = *r.out.size;
NDR_PRINT_IN_DEBUG(winreg_FlushKey, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_FLUSHKEY,
NDR_PRINT_IN_DEBUG(winreg_GetKeySecurity, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_GETKEYSECURITY,
NDR_PRINT_IN_DEBUG(winreg_LoadKey, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_LOADKEY,
NDR_PRINT_IN_DEBUG(winreg_NotifyChangeKeyValue, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_NOTIFYCHANGEKEYVALUE,
NDR_PRINT_IN_DEBUG(winreg_OpenKey, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_OPENKEY,
NDR_PRINT_IN_DEBUG(winreg_QueryInfoKey, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_QUERYINFOKEY,
NDR_PRINT_IN_DEBUG(winreg_QueryValue, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_QUERYVALUE,
*type = *r.out.type;
}
if (data && r.out.data) {
- memcpy(data, r.out.data, *r.in.data_size * sizeof(*data));
+ if ((*r.out.data_size) > (*r.in.data_size)) {
+ return NT_STATUS_INVALID_NETWORK_RESPONSE;
+ }
+ if ((*r.out.data_length) > (*r.out.data_size)) {
+ return NT_STATUS_INVALID_NETWORK_RESPONSE;
+ }
+ memcpy(data, r.out.data, (*r.out.data_length) * sizeof(*data));
}
if (data_size && r.out.data_size) {
*data_size = *r.out.data_size;
NDR_PRINT_IN_DEBUG(winreg_ReplaceKey, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_REPLACEKEY,
NDR_PRINT_IN_DEBUG(winreg_RestoreKey, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_RESTOREKEY,
NDR_PRINT_IN_DEBUG(winreg_SaveKey, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_SAVEKEY,
NDR_PRINT_IN_DEBUG(winreg_SetKeySecurity, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_SETKEYSECURITY,
NDR_PRINT_IN_DEBUG(winreg_SetValue, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_SETVALUE,
NDR_PRINT_IN_DEBUG(winreg_UnLoadKey, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_UNLOADKEY,
NDR_PRINT_IN_DEBUG(winreg_InitiateSystemShutdown, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_INITIATESYSTEMSHUTDOWN,
NDR_PRINT_IN_DEBUG(winreg_AbortSystemShutdown, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_ABORTSYSTEMSHUTDOWN,
NDR_PRINT_IN_DEBUG(winreg_GetVersion, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_GETVERSION,
NDR_PRINT_IN_DEBUG(winreg_OpenHKCC, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_OPENHKCC,
NDR_PRINT_IN_DEBUG(winreg_OpenHKDD, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_OPENHKDD,
NDR_PRINT_IN_DEBUG(winreg_QueryMultipleValues, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_QUERYMULTIPLEVALUES,
}
/* Return variables */
- memcpy(values, r.out.values, r.in.num_values * sizeof(*values));
+ memcpy(values, r.out.values, (r.in.num_values) * sizeof(*values));
if (buffer && r.out.buffer) {
- memcpy(buffer, r.out.buffer, *r.in.buffer_size * sizeof(*buffer));
+ if ((*r.out.buffer_size) > (*r.in.buffer_size)) {
+ return NT_STATUS_INVALID_NETWORK_RESPONSE;
+ }
+ memcpy(buffer, r.out.buffer, (*r.out.buffer_size) * sizeof(*buffer));
}
*buffer_size = *r.out.buffer_size;
NDR_PRINT_IN_DEBUG(winreg_InitiateSystemShutdownEx, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_INITIATESYSTEMSHUTDOWNEX,
NDR_PRINT_IN_DEBUG(winreg_SaveKeyEx, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_SAVEKEYEX,
NDR_PRINT_IN_DEBUG(winreg_OpenHKPT, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_OPENHKPT,
NDR_PRINT_IN_DEBUG(winreg_OpenHKPN, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_OPENHKPN,
NDR_PRINT_IN_DEBUG(winreg_QueryMultipleValues2, &r);
}
- status = cli_do_rpc_ndr(cli,
+ status = cli->dispatch(cli,
mem_ctx,
&ndr_table_winreg,
NDR_WINREG_QUERYMULTIPLEVALUES2,