about summary refs log tree commit diff
path: root/login
diff options
context:
space:
mode:
Diffstat (limited to 'login')
-rw-r--r--login/getutline_r.c3
-rw-r--r--login/pututline_r.c8
2 files changed, 6 insertions, 5 deletions
diff --git a/login/getutline_r.c b/login/getutline_r.c
index 62c8c2fd66..84c77cb244 100644
--- a/login/getutline_r.c
+++ b/login/getutline_r.c
@@ -53,7 +53,8 @@ getutline_r (const struct utmp *line, struct utmp **utmp,
       /* Update position pointer.  */
       utmp_data->loc_utmp += sizeof (struct utmp);
     }
-  while (line->ut_line != utmp_data->ubuf.ut_line);
+  while (strncmp (line->ut_line, utmp_data->ubuf.ut_line,
+		  sizeof line->ut_line));
 
   *utmp = &utmp_data->ubuf;
 
diff --git a/login/pututline_r.c b/login/pututline_r.c
index 365a37672e..92ba8fb308 100644
--- a/login/pututline_r.c
+++ b/login/pututline_r.c
@@ -44,9 +44,9 @@ pututline_r (const struct utmp *utmp_ptr, struct utmp_data *utmp_data)
       struct utmp_data *data_tmp = alloca (sizeof (utmp_data));
       struct utmp *dummy;
 
-      memcpy (data_tmp, utmp_data, sizeof (utmp_data));
+      *data_tmp = *utmp_data;
       utmp_data = data_tmp;
-      
+
       if (getutid_r (utmp_ptr, &dummy, utmp_data) < 0)
 	{
 	  if (errno != ESRCH)
@@ -66,7 +66,7 @@ pututline_r (const struct utmp *utmp_ptr, struct utmp_data *utmp_data)
 
   /* XXX An alternative solution would be to call an SUID root program
      which write the new value.  */
-  
+
   /* Try to lock the file.  */
   if (flock (utmp_data->ut_fd, LOCK_EX | LOCK_NB) < 0 && errno != ENOSYS)
     {
@@ -76,7 +76,7 @@ pututline_r (const struct utmp *utmp_ptr, struct utmp_data *utmp_data)
       /* This time we ignore the error.  */
       (void) flock (utmp_data->ut_fd, LOCK_EX | LOCK_NB);
     }
-  
+
   /* Write the new data.  */
   if (write (utmp_data->ut_fd, &utmp_data->ubuf, sizeof (struct utmp))
       != sizeof (struct utmp))