Bugtraq mailing list archives

Re: Possible SERIOUS bug in open()?


From: mem () MV MV COM (Mark E. Mallett)
Date: Sat, 25 Oct 1997 15:45:21 -0400


What about the higher flag bits?  (O_APPEND, O_CREAT, ...)

ah, right.


this would be much more clear and much less error-prone if
this was done explicitely instead of with a clever hack that
obfuscates the operation.

Agreed.  Heck, for clarity I even prefer a style of   if (flags == 0)
over   if (!flags)   but I'm probably the only one.



 Implementing it in this way
makes it clear what to do:

     switch(uap->flags & O_ACCMODE) {
     case O_RDONLY:
         lowbits = FREAD;
         break;
     case O_WRONLY:
         lowbits = FWRITE;
         break;
     case O_RDWR:
         lowbits = FREAD | FWRITE;
         break;
     default:
         return EINVAL;
     }
     flags = (uap->flags & ~O_ACCMODE) | lowbits;


Would probably want to move this above the opening falloc() also.

mm



Current thread: