Discussion:
[PATCH] Fix comparison between two character arrays
Jordi Sanfeliu
2018-07-27 09:02:55 UTC
Permalink
Hello,

The member 'id' in the 'utmp' struct is not a numeric but a character
array, hence the strncmp() function is needed to compare two members.

diff --git a/newlib/libc/unix/getut.c b/newlib/libc/unix/getut.c
index 89ed739..71a8c8f 100644
--- a/newlib/libc/unix/getut.c
+++ b/newlib/libc/unix/getut.c
@@ -63,7 +63,7 @@ getutid (struct utmp *id)
case LOGIN_PROCESS:
case USER_PROCESS:
case DEAD_PROCESS:
- if (id->ut_id == utmp_data.ut_id)
+ if (!strncmp (id->ut_id, utmp_data.ut_id, sizeof (utmp_data.ut_id)))
return &utmp_data;
break;
default:

Thanks.

--
Jordi Sanfeliu
FIBRANET Network Services Provider
https://www.fibranet.cat
Corinna Vinschen
2018-07-30 07:37:38 UTC
Permalink
Post by Jordi Sanfeliu
Hello,
The member 'id' in the 'utmp' struct is not a numeric but a character array,
hence the strncmp() function is needed to compare two members.
diff --git a/newlib/libc/unix/getut.c b/newlib/libc/unix/getut.c
index 89ed739..71a8c8f 100644
--- a/newlib/libc/unix/getut.c
+++ b/newlib/libc/unix/getut.c
@@ -63,7 +63,7 @@ getutid (struct utmp *id)
- if (id->ut_id == utmp_data.ut_id)
+ if (!strncmp (id->ut_id, utmp_data.ut_id, sizeof (utmp_data.ut_id)))
return &utmp_data;
break;
Thanks.
--
Jordi Sanfeliu
FIBRANET Network Services Provider
https://www.fibranet.cat
Pushed.


Thanks,
Corinna
--
Corinna Vinschen
Cygwin Maintainer
Red Hat
Loading...