]> andersk Git - gssapi-openssh.git/blobdiff - openssh/loginrec.c
Merge from OPENSSH_3_8_1P1_GSSAPI_20040713 to OPENSSH_3_9P1_GSSAPI_20040818.
[gssapi-openssh.git] / openssh / loginrec.c
index 897921c633d5c00e45a764a427189cffde8ac913..34c97f9ff57153157bbf29569cc431b2a0c35f7f 100644 (file)
@@ -434,6 +434,11 @@ login_write (struct logininfo *li)
 #endif
 #ifdef USE_WTMPX
        wtmpx_write_entry(li);
+#endif
+#ifdef CUSTOM_SYS_AUTH_RECORD_LOGIN
+       if (li->type == LTYPE_LOGIN && 
+          !sys_auth_record_login(li->username,li->hostname,li->line))
+               logit("Writing login record failed for %s", li->username);
 #endif
        return 0;
 }
@@ -813,8 +818,8 @@ utmp_write_direct(struct logininfo *li, struct utmp *ut)
        endttyent();
 
        if((struct ttyent *)0 == ty) {
-               logit("utmp_write_entry: tty not found");
-               return(1);
+               logit("%s: tty not found", __func__);
+               return (0);
        }
 #else /* FIXME */
 
@@ -823,7 +828,18 @@ utmp_write_direct(struct logininfo *li, struct utmp *ut)
 #endif /* HAVE_GETTTYENT */
 
        if (tty > 0 && (fd = open(UTMP_FILE, O_RDWR|O_CREAT, 0644)) >= 0) {
-               (void)lseek(fd, (off_t)(tty * sizeof(struct utmp)), SEEK_SET);
+               off_t pos, ret;
+
+               pos = (off_t)tty * sizeof(struct utmp);
+               if ((ret = lseek(fd, pos, SEEK_SET)) == -1) {
+                       logit("%s: llseek: %s", strerror(errno));
+                       return (0);
+               }
+               if (ret != pos) {
+                       logit("%s: Couldn't seek to tty %s slot in %s", tty,
+                           UTMP_FILE);
+                       return (0);
+               }
                /*
                 * Prevent luser from zero'ing out ut_host.
                 * If the new ut_line is empty but the old one is not
@@ -836,9 +852,17 @@ utmp_write_direct(struct logininfo *li, struct utmp *ut)
                        (void)memcpy(ut->ut_host, old_ut.ut_host, sizeof(ut->ut_host));
                }
 
-               (void)lseek(fd, (off_t)(tty * sizeof(struct utmp)), SEEK_SET);
+               if ((ret = lseek(fd, pos, SEEK_SET)) == -1) {
+                       logit("%s: llseek: %s", __func__, strerror(errno));
+                       return (0);
+               }
+               if (ret != pos) {
+                       logit("%s: Couldn't seek to tty %s slot in %s",
+                           __func__, tty, UTMP_FILE);
+                       return (0);
+               }
                if (atomicio(vwrite, fd, ut, sizeof(*ut)) != sizeof(*ut))
-                       logit("utmp_write_direct: error writing %s: %s",
+                       logit("%s: error writing %s: %s", __func__,
                            UTMP_FILE, strerror(errno));
 
                (void)close(fd);
This page took 0.096169 seconds and 4 git commands to generate.