setdomainname: use strlen() to get length of string
PATCH 1/1 setdomainname: use strlen() to get length of string
The sizeof(new) is only to get the size of char *, and it's not corret to pass it as 'len' in setdomainname(). Here replace by strlen() to get the correct number of characters for string.
On x86_64, we get this failures if the LTP compilied in 32bit.
-----Error Log-----
setdomainname.h:24: INFO: Testing libc setdomainname() setdomainname01.c:24: FAIL: getdomainname() returned wrong domainname: 'test' setdomainname.h:27: INFO: Testing __NR_setdomainname syscall setdomainname01.c:24: FAIL: getdomainname() returned wrong domainname: 'test'
-------------------
--- testcases/kernel/syscalls/setdomainname/setdomainname01.c | 2 +- testcases/kernel/syscalls/setdomainname/setdomainname03.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
testcases/kernel/syscalls/setdomainname/setdomainname01.c +1 -1
@@ -12,7 +12,7 @@ static void do_test(void)char *new =TST_VALID_DOMAIN_NAME ;static char tmp[_UTSNAME_DOMAIN_LENGTH]; -TEST (do_setdomainname (new,sizeof (new))); +TEST (do_setdomainname (new,strlen (new)));if (TST_RET !=0 )tst_brk (TFAIL |TTERRNO ,"setdomainname() failed: %d" ,TST_ERR );
testcases/kernel/syscalls/setdomainname/setdomainname03.c +1 -1
@@ -16,7 +16,7 @@ static void do_test(void) {char *new =TST_VALID_DOMAIN_NAME ; -TEST (do_setdomainname (new,sizeof (new))); +TEST (do_setdomainname (new,strlen (new)));if (TST_RET !=-1 ) {tst_res (TFAIL ,"unexpected exit code: %ld" ,TST_RET );
Signature · 1 line
2.20.1
PATCH 1/1 setdomainname: use strlen() to get length of string
Quoted 3 lines · Li Wang
The sizeof(new) is only to get the size of char *, and it's not corret to pass it as 'len' in
setdomainname(). Here replace bystrlen()to get the correct number of characters for string.
Hi Li,
As setdomainname(2) manpage mentions, name does not require a terminating null byte.
It looks good to me. :-)
Best Regards,
Xiao Yang
Quoted 42 lines
On
x86_64, we get this failures if the LTP compilied in 32bit.-----Error Log-----
setdomainname.h:24: INFO: Testing libcsetdomainname()setdomainname01.c:24: FAIL:getdomainname()returned wrong domainname: 'test' setdomainname.h:27: INFO: Testing__NR_setdomainnamesyscall setdomainname01.c:24: FAIL:getdomainname()returned wrong domainname: 'test'
-------------------Signed-off-by Li Wang<[email protected]>Cc Petr Vorel<[email protected]>--- testcases/kernel/syscalls/setdomainname/setdomainname01.c | 2 +- testcases/kernel/syscalls/setdomainname/setdomainname03.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)testcases/kernel/syscalls/setdomainname/setdomainname01.c +1
-1@@ -12,7 +12,7 @@ static void do_test(void)char *new =TST_VALID_DOMAIN_NAME ;static char tmp[_UTSNAME_DOMAIN_LENGTH]; -TEST (do_setdomainname (new,sizeof (new))); +TEST (do_setdomainname (new,strlen (new)));if (TST_RET !=0 )tst_brk (TFAIL |TTERRNO ,"setdomainname() failed: %d" ,TST_ERR );testcases/kernel/syscalls/setdomainname/setdomainname03.c +1
-1@@ -16,7 +16,7 @@ static void do_test(void) {char *new =TST_VALID_DOMAIN_NAME ; -TEST (do_setdomainname (new,sizeof (new))); +TEST (do_setdomainname (new,strlen (new)));if (TST_RET !=-1 ) {tst_res (TFAIL ,"unexpected exit code: %ld" ,TST_RET );
PATCH 1/1 setdomainname: use strlen() to get length of string
Hi Li,
Quoted 20 lines · Li Wang
Quoted 3 lines
The sizeof(new) is only to get the size of char *, and it's not corret to pass it as 'len' in
setdomainname(). Here replace bystrlen()to get the correct number of characters for string.Hi Li,
As setdomainname(2) manpage mentions, name does not require a terminating null byte.
It looks good to me. :-)Best Regards,
Xiao YangQuoted 8 lines
On
x86_64, we get this failures if the LTP compilied in 32bit.-----Error Log-----
setdomainname.h:24: INFO: Testing libcsetdomainname()setdomainname01.c:24: FAIL:getdomainname()returned wrong domainname: 'test' setdomainname.h:27: INFO: Testing__NR_setdomainnamesyscall setdomainname01.c:24: FAIL:getdomainname()returned wrong domainname: 'test'
-------------------
Thanks for fixing it and sorry for introducing obvious error. Merged into master.
Kind regards,
Petr