From owner-freebsd-bugs@FreeBSD.ORG Thu Jul 17 12:11:36 2008 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F22D910656C2; Thu, 17 Jul 2008 12:11:36 +0000 (UTC) (envelope-from gavin@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 12C478FC2A; Thu, 17 Jul 2008 12:11:35 +0000 (UTC) (envelope-from gavin@FreeBSD.org) Received: from freefall.freebsd.org (gavin@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m6HCBYJN092984; Thu, 17 Jul 2008 12:11:34 GMT (envelope-from gavin@freefall.freebsd.org) Received: (from gavin@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m6HCBYfO092980; Thu, 17 Jul 2008 12:11:34 GMT (envelope-from gavin) Date: Thu, 17 Jul 2008 12:11:34 GMT Message-Id: <200807171211.m6HCBYfO092980@freefall.freebsd.org> To: arne_woerner@yahoo.com, gavin@FreeBSD.org, freebsd-bugs@FreeBSD.org, gavin@FreeBSD.org From: gavin@FreeBSD.org Cc: Subject: Re: bin/100018: newsyslog(8) does not check size if time_at is used X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jul 2008 12:11:37 -0000 Synopsis: newsyslog(8) does not check size if time_at is used State-Changed-From-To: open->feedback State-Changed-By: gavin State-Changed-When: Thu Jul 17 11:22:53 UTC 2008 State-Changed-Why: To submitter: Can you try the following patch please? It works for me, and I've been running it on a couple of machines for a few weeks without problem, but more testers would be beneficial! Index: src/usr.sbin/newsyslog/newsyslog.c =================================================================== RCS file: /home/ncvs/src/usr.sbin/newsyslog/newsyslog.c,v retrieving revision 1.108 diff -u -r1.108 newsyslog.c --- src/usr.sbin/newsyslog/newsyslog.c 30 Jan 2008 22:11:59 -0000 1.108 +++ src/usr.sbin/newsyslog/newsyslog.c 17 Jul 2008 12:06:53 -0000 @@ -424,11 +424,13 @@ { #define REASON_MAX 80 int modtime; + int check_time_rotate; fk_entry free_or_keep; double diffsecs; char temp_reason[REASON_MAX]; free_or_keep = FREE_ENT; + check_time_rotate = 0; if (verbose) { if (ent->flags & CE_COMPACT) printf("%s <%dZ>: ", ent->log, ent->numlogs); @@ -476,7 +478,6 @@ printf("--> will trim at %s", ptimeget_ctime(ent->trim_at)); } - return (free_or_keep); } else if (diffsecs >= 3600.0) { /* * trim_at is more than an hour in the past, @@ -491,7 +492,6 @@ printf("--> will trim at %s", ptimeget_ctime(ent->trim_at)); } - return (free_or_keep); } else if (verbose && noaction && dbg_at_times) { /* * If we are just debugging at-times, then @@ -501,9 +501,10 @@ */ printf("\n\t--> timematch at %s", ptimeget_ctime(ent->trim_at)); - return (free_or_keep); - } else if (verbose && ent->hours <= 0) { - printf("--> time is up\n"); + } else if (ent->hours <= 0) { + if (verbose) + printf("--> time is up\n"); + check_time_rotate = 1; } } if (verbose && (ent->trsize > 0)) @@ -526,7 +527,8 @@ ent->rotate = 1; snprintf(temp_reason, REASON_MAX, " due to size>%dK", ent->trsize); - } else if (ent->hours <= 0 && (ent->flags & CE_TRIMAT)) { + } else if ((ent->hours <= 0 && (ent->flags & CE_TRIMAT)) && + check_time_rotate) { ent->rotate = 1; } else if ((ent->hours > 0) && ((modtime >= ent->hours) || (modtime < 0))) { Responsible-Changed-From-To: freebsd-bugs->gavin Responsible-Changed-By: gavin Responsible-Changed-When: Thu Jul 17 11:22:53 UTC 2008 Responsible-Changed-Why: Track http://www.freebsd.org/cgi/query-pr.cgi?pr=100018