|
|
Message-ID: <20140621155637.GB17713@newbook>
Date: Sat, 21 Jun 2014 15:56:38 +0000
From: Isaac Dunham <ibid.ag@...il.com>
To: musl@...ts.openwall.com
Subject: Re: [PATCH v3] Implement fmtmsg
On Sat, Jun 21, 2014 at 10:39:02AM -0400, Rich Felker wrote:
> On Sat, Jun 21, 2014 at 01:41:02PM +0000, Isaac Dunham wrote:
> > On Sat, Jun 21, 2014 at 12:46:26AM -0400, Rich Felker wrote:
> > > On Fri, Jun 20, 2014 at 07:32:01AM -0700, Isaac Dunham wrote:
> > > > Here's a third revision of fmtmsg.
> > >
> > > Thanks, it looks good. I'm doing a bit of cleanup before I commit --
> > > mostly things like mismatches spaces/tabs in indention/alignment,
> > > trailing spaces, etc. Also taking out the useless if around the while
> > > loop that contains the if condition as part of the while condition,
> > > debloating the header a bit (all the hex constants), adding protection
> > > against pthread cancellation, and fixing one error in the header:
> > > 0xffffffff is not a valid value for MM_NOTOK since it doesn't fit in
> > > int.
> > >
> > > I'm a bit tired now so rather than just commit and possibly have
> > > stupid mistakes, I'm sending my draft revisions here (attached). If
> > > you get a chance please take a look and see if they look ok.
> >
> > All your changes look good, but I wrote one line that's unneeded.
> > (see below).
>
> Thanks.
>
> > > if (classification & MM_CONSOLE)
> > > consolefd = open("/dev/console", O_WRONLY);
> > > if (consolefd < 0) {
> > > classification &= ~MM_CONSOLE;
> >
> > I don't think this is needed.
> > After all, MM_CONSOLE is not checked after this.
>
> Indeed. But your pointing this out to me revealed another error below:
>
> > > ret = MM_NOCON;
> > > consolefd = 0;
> > > }
> > > if (severity == MM_HALT) errstring = "HALT: ";
> > > else if (severity == MM_ERROR) errstring = "ERROR: ";
> > > else if (severity == MM_WARNING) errstring = "WARNING: ";
> > > else if (severity == MM_INFO) errstring = "INFO: ";
> > > if (consolefd) {
>
> This is the wrong check for consoldfd being valid; 0 is a valid fd,
> whereas consolefd==-1 passes the test.
>
> So I think consolefd should be initialized to -1 not 0 and the check
> here should be >=0. Or we could just reorder the severity lines above
> the opening of the console so that the opening and use of consolefd
> aren't separated like this.
As far as I can tell:
-severity really should go above this (grouping related subjects)
-initializing to -1 will expose a bit of brokenness in here:
RET=MM_NOCON;
would be executed whenever we did not successfully open the console,
whether or not we tried to open it.
It would be better to
* leave the initialization alone, or move the error block into the same
if() {} block as the call to open().
* keep "classification &= ~MM_CONSOLE;"
* remove
- "consolefd = 0;"
* change the test as follows:
- if (consolefd) {
+ if (classification &= MM_CONSOLE) {
>
> Rich
Thanks,
Isaac Dunham
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.