dmmartindale@watmath.UUCP (Dave Martindale) (01/16/85)
Index: usr.bin/uucp/conn.c 4.2BSD Description: The code in conn.c that checks if the current time is within the window allowed in L.sys gets the boundary check wrong if the allowed call times cross midnight. Repeat-By: Set up an L.sys entry of "Any2300-0800". Try to call between 2300 and 2301. Fix: Basically, the existing code is too cute for its own good. Replace it with the code below which is shorter, easier to read, and even executes faster. *** /tmp/conn.c Tue Jan 15 23:29:18 1985 --- conn.c Tue Jan 15 23:39:43 1985 *************** *** 857,863 }; time_t clock; int rtime; ! int i, tl, th, tn, flag, dayok=0; struct tm *localtime(); struct tm *tp; char *index(); --- 857,863 ----- }; time_t clock; int rtime; ! int i, tl, th, tn, dayok=0; struct tm *localtime(); struct tm *tp; char *index(); *************** *** 898,912 tn = tp->tm_hour * 100 + tp->tm_min; if (i < 2) return(1); ! if (th < tl) ! flag = 0; /* set up for crossover 2400 test */ ! else ! flag = 1; ! if ((tn >= tl && tn <= th) ! || (tn >= th && tn <= tl)) /* test for crossover 2400 */ ! return(flag); ! else ! return(!flag); } --- 898,909 ----- tn = tp->tm_hour * 100 + tp->tm_min; if (i < 2) return(1); ! if (th < tl) { /* crosses midnight */ ! if (tl <= tn || tn < th) ! return(1); ! } else ! if (tl <= tn && tn < th) ! return(1); }