Skip to contentSkip to conversation

setdomainname: use strlen() to get length of string

PATCH New Li Wang 3 participants 3 messages Jul 23, 2019 – Jul 24, 2019

lore
Share & tools
lore

Li Wang

author
#0 lore raw

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
index 57d58ab42..1731af733 100644
@@ -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
index e53ea8806..b8d17d8da 100644
@@ -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
#1 lore raw

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 by strlen() 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 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
index 57d58ab42..1731af733 100644
@@ -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
index e53ea8806..b8d17d8da 100644
@@ -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);
#2 lore raw

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 by strlen() 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 8 lines

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'
-------------------

Thanks for fixing it and sorry for introducing obvious error. Merged into master.

Kind regards,
Petr