Package: sac severity: serious tags: patch sid wheezy
Sac defines a struct called "struct user". On armel and armhf this conflicts with "struct user" in sys/user.h which is indirectly included by your program.
This bug is known to affect sid and wheezy. It does not affect lenny and squeeze.
The attatched patch fixes ths issue by renaming the struct
diff -ur sac-1.9b5/gronk.c sac-1.9b5.new/gronk.c --- sac-1.9b5/gronk.c 2004-03-29 21:00:12.000000000 +0000 +++ sac-1.9b5.new/gronk.c 2011-12-10 02:29:24.000000000 +0000 @@ -634,7 +634,7 @@ if (lp->port == port) break; if (st) { - struct user *p; + struct sac_user *p; for(p=usr;p;p=p->nxt) if (!strncmp(su->u.ut_line,p->line,UT_LINESIZE) && (hosttoo? !strncmp(su->u.ut_host,p->host,UT_HOSTSIZE) : TRUE)) goto found_one; diff -ur sac-1.9b5/proto.h sac-1.9b5.new/proto.h --- sac-1.9b5/proto.h 2003-03-20 22:52:02.000000000 +0000 +++ sac-1.9b5.new/proto.h 2011-12-10 02:25:58.000000000 +0000 @@ -14,10 +14,10 @@ void do_reboot(time_t t); void changetime(time_t t, char *line); void cleanup(void); -void release(struct user *u, time_t t, struct sactmp *su, int usext, int siminc); +void release(struct sac_user *u, time_t t, struct sactmp *su, int usext, int siminc); void addlogin(struct login **login, struct login **last, time_t in, time_t out, char *name, char *tty, char *host); void apply_hours(time_t in, time_t out,time_t start, time_t h[24]); -void user_apply_hours(struct user *u, time_t out, struct day *d); +void user_apply_hours(struct sac_user *u, time_t out, struct day *d); void tty_apply_hours(time_t in, time_t out, struct day *d, struct tty *t); char *getwrd(char *s); struct usr *adduser(struct usr **up, char *s); diff -ur sac-1.9b5/sac.c sac-1.9b5.new/sac.c --- sac-1.9b5/sac.c 2011-12-10 02:31:46.000000000 +0000 +++ sac-1.9b5.new/sac.c 2011-12-10 02:24:52.000000000 +0000 @@ -671,7 +671,7 @@ void saclogin(struct sactmp su) { - struct user *q; + struct sac_user *q; struct day *d; struct usr *u = NULL, *up; int l; @@ -683,7 +683,7 @@ saclogout(su,FALSE); /* printf ("Logging in %s [%s] <%ld>...\n",u.ut_user,u.ut_line,u.ut_time); */ - q = bmalloc(sizeof(struct user)); + q = bmalloc(sizeof(struct sac_user)); strncpy(q->line,su.u.ut_line,UT_LINESIZE); strncpy(q->user,su.u.ut_user,UT_NAMESIZE); strncpy(q->host,su.u.ut_host,UT_HOSTSIZE); @@ -744,7 +744,7 @@ void saclogout(struct sactmp su, int usext) { - struct user *p, *q; + struct sac_user *p, *q; struct usr *u = NULL, *up; struct day *d; @@ -841,7 +841,7 @@ */ void do_reboot(time_t t) { - struct user *p; + struct sac_user *p; struct day *d; struct usr *u; @@ -884,7 +884,7 @@ void changetime(time_t t, char *line) { static time_t old = 0; - struct user *p; + struct sac_user *p; signed long dif; if (!strcmp("|",line)) { @@ -913,7 +913,7 @@ { time_t t = time(0); struct day *lastday; - struct user *p; + struct sac_user *p; struct usr *u; /* Ooops, the -t option can't just ignore time that isn't in our days list @@ -954,11 +954,11 @@ * out >= start && out <= stop || * in < start && out > stop */ -void release(struct user *u, time_t t, struct sactmp *su, int usext, int siminc) +void release(struct sac_user *u, time_t t, struct sactmp *su, int usext, int siminc) { struct day *p; struct usr *up; - struct user *q; + struct sac_user *q; struct tty *tp; struct simuse *s; int i; @@ -1250,7 +1250,7 @@ } } -void user_apply_hours(struct user *u, time_t out, struct day *d) +void user_apply_hours(struct sac_user *u, time_t out, struct day *d) { int i; time_t b, e; diff -ur sac-1.9b5/sac.h sac-1.9b5.new/sac.h --- sac-1.9b5/sac.h 2002-04-23 15:03:48.000000000 +0000 +++ sac-1.9b5.new/sac.h 2011-12-10 02:28:21.000000000 +0000 @@ -145,12 +145,12 @@ struct hosts *nxt; }; -struct user { +struct sac_user { char user[UT_NAMESIZE+1]; char line[UT_LINESIZE+1]; char host[UT_HOSTSIZE+1]; time_t in; - struct user *nxt; + struct sac_user *nxt; }; enum filetype { @@ -196,7 +196,7 @@ EXTERN struct simuse *simuse INIT(NULL); EXTERN struct tty *ttys INIT(NULL); EXTERN struct hosts *hosts INIT(NULL); -EXTERN struct user *usr INIT(NULL); +EXTERN struct sac_user *usr INIT(NULL); #ifdef MAIN char *month[13] = {