Print this page
2989 Eliminate use of LOGNAME_MAX in ON
1166 useradd have warning with name more 8 chars

*** 29,38 **** --- 29,40 ---- * Use is subject to license terms. */ /* * Copyright 2012 Joyent, Inc. All rights reserved. + * + * Copyright (c) 2013 Gary Mills */ #include <signal.h> #include <stdio.h> #include <stdlib.h>
*** 58,79 **** #include <sys/contract/process.h> #include <libcontract.h> #include <sys/ctfs.h> /* ! * utmpx defines wider fields for user and line. For compatibility of output, ! * we are limiting these to the old maximums in utmp. Define UTMPX_NAMELEN ! * to use the full lengths. */ ! #ifndef UTMPX_NAMELEN ! /* XXX - utmp -fix name length */ ! #define NMAX (_POSIX_LOGIN_NAME_MAX - 1) ! #define LMAX 12 ! #else /* UTMPX_NAMELEN */ ! #define NMAX (sizeof (((struct utmpx *)0)->ut_user) ! #define LMAX (sizeof (((struct utmpx *)0)->ut_line) ! #endif /* UTMPX_NAMELEN */ static char mesg[3000]; static char *infile; static int gflag; static struct group *pgrp; --- 60,73 ---- #include <sys/contract/process.h> #include <libcontract.h> #include <sys/ctfs.h> /* ! * Use the full lengths from utmpx for user and line. */ ! #define NMAX (sizeof (((struct utmpx *)0)->ut_user)) ! #define LMAX (sizeof (((struct utmpx *)0)->ut_line)) static char mesg[3000]; static char *infile; static int gflag; static struct group *pgrp;
*** 80,90 **** static char *grpname; static char line[MAXNAMLEN+1] = "???"; static char systm[MAXNAMLEN+1]; static time_t tloc; static struct utsname utsn; ! static char who[9] = "???"; static char time_buf[50]; #define DATE_FMT "%a %b %e %H:%M:%S" static void sendmes(struct utmpx *, zoneid_t); static void sendmes_tozone(zoneid_t, int); --- 74,84 ---- static char *grpname; static char line[MAXNAMLEN+1] = "???"; static char systm[MAXNAMLEN+1]; static time_t tloc; static struct utsname utsn; ! static char who[NMAX+1] = "???"; static char time_buf[50]; #define DATE_FMT "%a %b %e %H:%M:%S" static void sendmes(struct utmpx *, zoneid_t); static void sendmes_tozone(zoneid_t, int);
*** 224,234 **** if (rwho[0] != '\0') { cp = copy_str_till(rsystm, ++cp, ':', MAXNAMLEN + 1); if (rsystm[0] != '\0') { (void) strcpy(systm, rsystm); ! (void) strncpy(rwho, who, 9); (void) strcpy(line, "rpc.rwalld"); } } } } --- 218,229 ---- if (rwho[0] != '\0') { cp = copy_str_till(rsystm, ++cp, ':', MAXNAMLEN + 1); if (rsystm[0] != '\0') { (void) strcpy(systm, rsystm); ! (void) strncpy(rwho, who, ! sizeof (who)); (void) strcpy(line, "rpc.rwalld"); } } } }
*** 426,436 **** who, line, systm, time_buf); if (gflag) (void) fprintf(f, " to group %s", grpname); (void) fprintf(f, "...\n"); #ifdef DEBUG ! (void) fprintf(f, "DEBUG: To %.8s on %s\n", p->ut_user, s); #endif i = strlen(mesg); for (bp = mesg; --i >= 0; bp++) { ibp = (unsigned int)((unsigned char) *bp); if (*bp == '\n') --- 421,431 ---- who, line, systm, time_buf); if (gflag) (void) fprintf(f, " to group %s", grpname); (void) fprintf(f, "...\n"); #ifdef DEBUG ! (void) fprintf(f, "DEBUG: To %.*s on %s\n", NMAX, p->ut_user, s); #endif i = strlen(mesg); for (bp = mesg; --i >= 0; bp++) { ibp = (unsigned int)((unsigned char) *bp); if (*bp == '\n')
*** 468,484 **** static int chkgrp(char *name) { int i; ! char *p; for (i = 0; pgrp->gr_mem[i] && pgrp->gr_mem[i][0]; i++) { ! for (p = name; *p && *p != ' '; p++) ! ; ! *p = 0; ! if (strncmp(name, pgrp->gr_mem[i], 8) == 0) return (1); } return (0); } --- 463,478 ---- static int chkgrp(char *name) { int i; ! char user[NMAX + 1]; + (void) strncpy(user, name, NMAX); + user[NMAX] = '\0'; for (i = 0; pgrp->gr_mem[i] && pgrp->gr_mem[i][0]; i++) { ! if (strcmp(user, pgrp->gr_mem[i]) == 0) return (1); } return (0); }