r19797: Convert the remaining pipes to the "new" unique out ptr handling
[abartlet/samba.git/.git] / source3 / rpcclient / cmd_echo.c
index 79ba744a55a7bba6702885213b0f5b41c2f318da..b8058fa28a0794640238886faec3fd3faf0739c3 100644 (file)
@@ -22,7 +22,7 @@
 #include "includes.h"
 #include "rpcclient.h"
 
-static NTSTATUS cmd_echo_add_one(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+static NTSTATUS cmd_echo_add_one(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
                                 int argc, const char **argv)
 {
        uint32 request = 1, response;
@@ -36,7 +36,7 @@ static NTSTATUS cmd_echo_add_one(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        if (argc == 2)
                request = atoi(argv[1]);
 
-       result = cli_echo_add_one(cli, mem_ctx, request, &response);
+       result = rpccli_echo_AddOne(cli, mem_ctx, request, &response);
 
        if (!NT_STATUS_IS_OK(result))
                goto done;
@@ -47,12 +47,12 @@ done:
        return result;
 }
 
-static NTSTATUS cmd_echo_data(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+static NTSTATUS cmd_echo_data(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
                              int argc, const char **argv)
 {
        uint32 size, i;
        NTSTATUS result;
-       char *in_data = NULL, *out_data = NULL;
+       uint8 *in_data = NULL, *out_data = NULL;
 
        if (argc != 2) {
                printf("Usage: %s num\n", argv[0]);
@@ -60,12 +60,12 @@ static NTSTATUS cmd_echo_data(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        }
 
        size = atoi(argv[1]);
-       in_data = malloc(size);
+       in_data = (uint8 *)SMB_MALLOC(size);
 
        for (i = 0; i < size; i++)
                in_data[i] = i & 0xff;
 
-       result = cli_echo_data(cli, mem_ctx, size, in_data, &out_data);
+       result = rpccli_echo_EchoData(cli, mem_ctx, size, in_data, &out_data);
 
        if (!NT_STATUS_IS_OK(result))
                goto done;
@@ -74,22 +74,24 @@ static NTSTATUS cmd_echo_data(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                if (in_data[i] != out_data[i]) {
                        printf("mismatch at offset %d, %d != %d\n",
                               i, in_data[i], out_data[i]);
+                       result = NT_STATUS_UNSUCCESSFUL;
                }
        }
 
 done:
        SAFE_FREE(in_data);
+       TALLOC_FREE(out_data);
 
        return result;
 }
 
-static NTSTATUS cmd_echo_source_data(struct cli_state *cli, 
+static NTSTATUS cmd_echo_source_data(struct rpc_pipe_client *cli, 
                                     TALLOC_CTX *mem_ctx, int argc, 
                                     const char **argv)
 {
        uint32 size, i;
        NTSTATUS result;
-       char *out_data = NULL;
+       uint8 *out_data;
 
        if (argc != 2) {
                printf("Usage: %s num\n", argv[0]);
@@ -98,28 +100,31 @@ static NTSTATUS cmd_echo_source_data(struct cli_state *cli,
 
        size = atoi(argv[1]);
 
-       result = cli_echo_source_data(cli, mem_ctx, size, &out_data);
+       result = rpccli_echo_SourceData(cli, mem_ctx, size, &out_data);
 
        if (!NT_STATUS_IS_OK(result))
                goto done;
 
        for (i = 0; i < size; i++) {
-               if (out_data && out_data[i] != (i & 0xff)) {
+               if (out_data[i] != (i & 0xff)) {
                        printf("mismatch at offset %d, %d != %d\n",
                               i, out_data[i], i & 0xff);
+                       result = NT_STATUS_UNSUCCESSFUL;
                }
        }
 
 done:
+       TALLOC_FREE(out_data);
+
        return result;
 }
 
-static NTSTATUS cmd_echo_sink_data(struct cli_state *cli, TALLOC_CTX *mem_ctx,
+static NTSTATUS cmd_echo_sink_data(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
                                   int argc, const char **argv)
 {
        uint32 size, i;
        NTSTATUS result;
-       char *in_data = NULL;
+       uint8 *in_data = NULL;
 
        if (argc != 2) {
                printf("Usage: %s num\n", argv[0]);
@@ -127,12 +132,12 @@ static NTSTATUS cmd_echo_sink_data(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        }
 
        size = atoi(argv[1]);
-       in_data = malloc(size);
+       in_data = (uint8 *)SMB_MALLOC(size);
 
        for (i = 0; i < size; i++)
                in_data[i] = i & 0xff;
 
-       result = cli_echo_sink_data(cli, mem_ctx, size, in_data);
+       result = rpccli_echo_SinkData(cli, mem_ctx, size, in_data);
 
        if (!NT_STATUS_IS_OK(result))
                goto done;
@@ -149,9 +154,9 @@ struct cmd_set echo_commands[] = {
 
        { "ECHO" },
 
-       { "echoaddone", RPC_RTYPE_NTSTATUS, cmd_echo_add_one,     NULL, PI_ECHO, "Add one to a number", "" },
-       { "echodata",   RPC_RTYPE_NTSTATUS, cmd_echo_data,        NULL, PI_ECHO, "Echo data",           "" },
-       { "sinkdata",   RPC_RTYPE_NTSTATUS, cmd_echo_sink_data,   NULL, PI_ECHO, "Sink data",           "" },
-       { "sourcedata", RPC_RTYPE_NTSTATUS, cmd_echo_source_data, NULL, PI_ECHO, "Source data",         "" },
+       { "echoaddone", RPC_RTYPE_NTSTATUS, cmd_echo_add_one,     NULL, PI_RPCECHO, NULL, "Add one to a number", "" },
+       { "echodata",   RPC_RTYPE_NTSTATUS, cmd_echo_data,        NULL, PI_RPCECHO, NULL, "Echo data",           "" },
+       { "sinkdata",   RPC_RTYPE_NTSTATUS, cmd_echo_sink_data,   NULL, PI_RPCECHO, NULL, "Sink data",           "" },
+       { "sourcedata", RPC_RTYPE_NTSTATUS, cmd_echo_source_data, NULL, PI_RPCECHO, NULL, "Source data",         "" },
        { NULL }
 };