[LTP] [PATCH] rpc01: fix variable not initialized

Petr Vorel pvorel@suse.cz
Mon Jul 11 08:09:29 CEST 2022


Hi all,

[ Cc Steve and libtirpc-devel ML ]

> when error occurred in function callrpc/clnt_call, return_buffer may
> be leaved not initialized.So initialize return_buffer to NULL,and
> retrieve the return_buffer->data when return_buffer is really assigned.

Shouldn't be rc used for verification?

man callrpc(3):
int callrpc(...);
...
This routine returns zero if it succeeds, or the value of enum clnt_stat cast to
an integer if it fails. The routine clnt_perrno() is handy for translating
failure statuses into messages.

Kind regards,
Petr

> Signed-off-by: Hongchen Zhang <zhanghongchen@loongson.cn>
> ---
>  testcases/network/rpc/basic_tests/rpc01/rpc1.c | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)

> diff --git a/testcases/network/rpc/basic_tests/rpc01/rpc1.c b/testcases/network/rpc/basic_tests/rpc01/rpc1.c
> index bc9f35b..5691c06 100644
> --- a/testcases/network/rpc/basic_tests/rpc01/rpc1.c
> +++ b/testcases/network/rpc/basic_tests/rpc01/rpc1.c
> @@ -24,7 +24,7 @@ void usage_error(char *program_name);
>  int main(int argc, char *argv[])
>  {
>  	struct hostent *hp;
> -	struct data buffer, *return_buffer;
> +	struct data buffer, *return_buffer = NULL;
>  	int i, n, rc;
>  	FILE *fp;
>  	struct stat stat_buffer;
> @@ -128,7 +128,8 @@ int main(int argc, char *argv[])
>  	rc = callrpc(server, program, version, 1, (xdrproc_t)xdr_send_data,
>  			(char *)&buffer, (xdrproc_t)xdr_receive_data,
>  			(char *)&return_buffer);
> -	do_compare(rc, "callrpc", &buffer, return_buffer->data);
> +	do_compare(rc, "callrpc", &buffer,
> +				return_buffer ? return_buffer->data : NULL);

>  	server_sin.sin_port = 0;
>  	sock = RPC_ANYSOCK;
> @@ -145,7 +146,8 @@ int main(int argc, char *argv[])
>  				(char *)&buffer, (xdrproc_t)xdr_receive_data,
>  				(char *)&return_buffer, timeout);
>  	clnt_destroy(clnt);
> -	do_compare(rc, "udp transport", &buffer, return_buffer->data);
> +	do_compare(rc, "udp transport", &buffer,
> +				return_buffer ? return_buffer->data : NULL);

>  	server_sin.sin_port = 0;
>  	sock = RPC_ANYSOCK;
> @@ -160,7 +162,8 @@ int main(int argc, char *argv[])
>  				(char *)&buffer, (xdrproc_t)xdr_receive_data,
>  				(char *)&return_buffer, timeout);
>  	clnt_destroy(clnt);
> -	do_compare(rc, "tcp transport", &buffer, return_buffer->data);
> +	do_compare(rc, "tcp transport", &buffer,
> +				return_buffer ? return_buffer->data : NULL);

>  	exit(0);
>  }


More information about the ltp mailing list