when updating the ut_name utmp entry, do NOT always smash a trailing
authoraland <aland>
Thu, 23 Aug 2001 19:30:07 +0000 (19:30 +0000)
committeraland <aland>
Thu, 23 Aug 2001 19:30:07 +0000 (19:30 +0000)
zero on the name.  The field is fixed width, so it's OK to have
an 8-character username, without a trailing 0.

Bug found by Michael Chernyakhovsky <magmike@mail.ru>

src/modules/rlm_unix/rlm_unix.c

index 64a207e..8a7b61f 100644 (file)
@@ -489,7 +489,11 @@ static int unix_accounting(void *instance, REQUEST *request)
        for (vp = request->packet->vps; vp; vp = vp->next) {
                switch (vp->attribute) {
                        case PW_USER_NAME:
-                               strNcpy(ut.ut_name, (char *)vp->strvalue, sizeof(ut.ut_name));
+                               if (vp->length >= sizeof(ut.ut_name)) {
+                                       memcpy(ut.ut_name, (char *)vp->strvalue, sizeof(ut.ut_name));
+                               } else {
+                                       strNcpy(ut.ut_name, (char *)vp->strvalue, sizeof(ut.ut_name));
+                               }
                                break;
                        case PW_LOGIN_IP_HOST:
                        case PW_FRAMED_IP_ADDRESS: