* [LTP] [PATCH] rpc01: fix variable not initialized
@ 2022-07-04 12:08 Hongchen Zhang
0 siblings, 0 replies; 4+ messages in thread
From: Hongchen Zhang @ 2022-07-04 12:08 UTC (permalink / raw)
To: Stanislav Kholmanskikh, Cyril Hrubis; +Cc: ltp, Hongchen Zhang
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.
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);
}
--
1.8.3.1
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [LTP] [PATCH] rpc01: fix variable not initialized
2022-07-11 6:09 ` Petr Vorel
@ 2022-07-12 7:01 ` Hongchen Zhang
0 siblings, 0 replies; 4+ messages in thread
From: Hongchen Zhang @ 2022-07-12 7:01 UTC (permalink / raw)
To: Petr Vorel; +Cc: libtirpc-devel, ltp, Steve Dickson
On 2022/7/11 下午2:09, Petr Vorel wrote:
> 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);
>> }
Hi Petr,
I have modified as you said and have send another patch,the new
method is to change the parameter passed to do_compare, please check again.
Best Regards,
Hongchen
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [LTP] [PATCH] rpc01: fix variable not initialized
2022-07-04 12:17 Hongchen Zhang
@ 2022-07-11 6:09 ` Petr Vorel
2022-07-12 7:01 ` Hongchen Zhang
0 siblings, 1 reply; 4+ messages in thread
From: Petr Vorel @ 2022-07-11 6:09 UTC (permalink / raw)
To: Hongchen Zhang; +Cc: libtirpc-devel, ltp, Steve Dickson
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);
> }
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 4+ messages in thread
* [LTP] [PATCH] rpc01: fix variable not initialized
@ 2022-07-04 12:17 Hongchen Zhang
2022-07-11 6:09 ` Petr Vorel
0 siblings, 1 reply; 4+ messages in thread
From: Hongchen Zhang @ 2022-07-04 12:17 UTC (permalink / raw)
To: Cyril Hrubis; +Cc: ltp, Hongchen Zhang
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.
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);
}
--
1.8.3.1
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-07-12 7:01 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-04 12:08 [LTP] [PATCH] rpc01: fix variable not initialized Hongchen Zhang
2022-07-04 12:17 Hongchen Zhang
2022-07-11 6:09 ` Petr Vorel
2022-07-12 7:01 ` Hongchen Zhang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.