rerun: make samba3-idl
[samba.git] / librpc / gen_ndr / cli_winreg.c
index 17b7281c7218964e14fe4eec2f385c95488443df..93f969d34f3f90d67c7d89e43644586a47440756 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include "includes.h"
-#include "librpc/gen_ndr/cli_winreg.h"
+#include "../librpc/gen_ndr/cli_winreg.h"
 
 NTSTATUS rpccli_winreg_OpenHKCR(struct rpc_pipe_client *cli,
                                TALLOC_CTX *mem_ctx,
@@ -24,7 +24,7 @@ NTSTATUS rpccli_winreg_OpenHKCR(struct rpc_pipe_client *cli,
                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,
@@ -71,7 +71,7 @@ NTSTATUS rpccli_winreg_OpenHKCU(struct rpc_pipe_client *cli,
                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,
@@ -118,7 +118,7 @@ NTSTATUS rpccli_winreg_OpenHKLM(struct rpc_pipe_client *cli,
                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,
@@ -165,7 +165,7 @@ NTSTATUS rpccli_winreg_OpenHKPD(struct rpc_pipe_client *cli,
                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,
@@ -212,7 +212,7 @@ NTSTATUS rpccli_winreg_OpenHKU(struct rpc_pipe_client *cli,
                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,
@@ -256,7 +256,7 @@ NTSTATUS rpccli_winreg_CloseKey(struct rpc_pipe_client *cli,
                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,
@@ -313,7 +313,7 @@ NTSTATUS rpccli_winreg_CreateKey(struct rpc_pipe_client *cli,
                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,
@@ -362,7 +362,7 @@ NTSTATUS rpccli_winreg_DeleteKey(struct rpc_pipe_client *cli,
                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,
@@ -407,7 +407,7 @@ NTSTATUS rpccli_winreg_DeleteValue(struct rpc_pipe_client *cli,
                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,
@@ -458,7 +458,7 @@ NTSTATUS rpccli_winreg_EnumKey(struct rpc_pipe_client *cli,
                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,
@@ -497,7 +497,7 @@ NTSTATUS rpccli_winreg_EnumValue(struct rpc_pipe_client *cli,
                                 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] */,
@@ -520,7 +520,7 @@ NTSTATUS rpccli_winreg_EnumValue(struct rpc_pipe_client *cli,
                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,
@@ -544,7 +544,13 @@ NTSTATUS rpccli_winreg_EnumValue(struct rpc_pipe_client *cli,
                *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;
@@ -576,7 +582,7 @@ NTSTATUS rpccli_winreg_FlushKey(struct rpc_pipe_client *cli,
                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,
@@ -623,7 +629,7 @@ NTSTATUS rpccli_winreg_GetKeySecurity(struct rpc_pipe_client *cli,
                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,
@@ -671,7 +677,7 @@ NTSTATUS rpccli_winreg_LoadKey(struct rpc_pipe_client *cli,
                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,
@@ -726,7 +732,7 @@ NTSTATUS rpccli_winreg_NotifyChangeKeyValue(struct rpc_pipe_client *cli,
                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,
@@ -776,7 +782,7 @@ NTSTATUS rpccli_winreg_OpenKey(struct rpc_pipe_client *cli,
                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,
@@ -830,7 +836,7 @@ NTSTATUS rpccli_winreg_QueryInfoKey(struct rpc_pipe_client *cli,
                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,
@@ -892,7 +898,7 @@ NTSTATUS rpccli_winreg_QueryValue(struct rpc_pipe_client *cli,
                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,
@@ -915,7 +921,13 @@ NTSTATUS rpccli_winreg_QueryValue(struct rpc_pipe_client *cli,
                *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;
@@ -945,7 +957,7 @@ NTSTATUS rpccli_winreg_ReplaceKey(struct rpc_pipe_client *cli,
                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,
@@ -992,7 +1004,7 @@ NTSTATUS rpccli_winreg_RestoreKey(struct rpc_pipe_client *cli,
                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,
@@ -1039,7 +1051,7 @@ NTSTATUS rpccli_winreg_SaveKey(struct rpc_pipe_client *cli,
                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,
@@ -1086,7 +1098,7 @@ NTSTATUS rpccli_winreg_SetKeySecurity(struct rpc_pipe_client *cli,
                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,
@@ -1137,7 +1149,7 @@ NTSTATUS rpccli_winreg_SetValue(struct rpc_pipe_client *cli,
                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,
@@ -1178,7 +1190,7 @@ NTSTATUS rpccli_winreg_UnLoadKey(struct rpc_pipe_client *cli,
                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,
@@ -1229,7 +1241,7 @@ NTSTATUS rpccli_winreg_InitiateSystemShutdown(struct rpc_pipe_client *cli,
                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,
@@ -1272,7 +1284,7 @@ NTSTATUS rpccli_winreg_AbortSystemShutdown(struct rpc_pipe_client *cli,
                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,
@@ -1316,7 +1328,7 @@ NTSTATUS rpccli_winreg_GetVersion(struct rpc_pipe_client *cli,
                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,
@@ -1363,7 +1375,7 @@ NTSTATUS rpccli_winreg_OpenHKCC(struct rpc_pipe_client *cli,
                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,
@@ -1410,7 +1422,7 @@ NTSTATUS rpccli_winreg_OpenHKDD(struct rpc_pipe_client *cli,
                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,
@@ -1462,7 +1474,7 @@ NTSTATUS rpccli_winreg_QueryMultipleValues(struct rpc_pipe_client *cli,
                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,
@@ -1481,9 +1493,12 @@ NTSTATUS rpccli_winreg_QueryMultipleValues(struct rpc_pipe_client *cli,
        }
 
        /* 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;
 
@@ -1520,7 +1535,7 @@ NTSTATUS rpccli_winreg_InitiateSystemShutdownEx(struct rpc_pipe_client *cli,
                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,
@@ -1561,7 +1576,7 @@ NTSTATUS rpccli_winreg_SaveKeyEx(struct rpc_pipe_client *cli,
                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,
@@ -1607,7 +1622,7 @@ NTSTATUS rpccli_winreg_OpenHKPT(struct rpc_pipe_client *cli,
                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,
@@ -1654,7 +1669,7 @@ NTSTATUS rpccli_winreg_OpenHKPN(struct rpc_pipe_client *cli,
                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,
@@ -1696,7 +1711,7 @@ NTSTATUS rpccli_winreg_QueryMultipleValues2(struct rpc_pipe_client *cli,
                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,