Ignore:
Timestamp:
May 12, 2003, 5:29:09 PM (22 years ago)
Author:
sandervl
Message:

_lopen: wrong parsing of mode parameter

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/lfile.cpp

    r3714 r10083  
    1 /* $Id: lfile.cpp,v 1.7 2000-06-16 00:04:30 phaller Exp $ */
     1/* $Id: lfile.cpp,v 1.8 2003-05-12 15:29:09 sandervl Exp $ */
    22
    33/*
     
    105105
    106106HFILE WIN32API _lopen(LPCSTR pszFileName,
    107                       int    arg2)
     107                      int    mode)
    108108{
    109109   ULONG  ulAccess = 0;
     
    113113   dprintf(("KERNEL32: _lopen(%s, %08xh)\n",
    114114            pszFileName,
    115             arg2));
    116 
    117    if (arg2 & ~(OF_READ|OF_READWRITE|OF_WRITE|OF_SHARE_COMPAT|OF_SHARE_DENY_NONE|OF_SHARE_DENY_READ|OF_SHARE_DENY_WRITE|OF_SHARE_EXCLUSIVE))
     115            mode));
     116
     117   if (mode & ~(OF_READ|OF_READWRITE|OF_WRITE|OF_SHARE_COMPAT|OF_SHARE_DENY_NONE|OF_SHARE_DENY_READ|OF_SHARE_DENY_WRITE|OF_SHARE_EXCLUSIVE))
    118118      dprintf(("KERNEL32: (warn) _lopen has unknown flag(s) set.\n"));
    119119
    120120   /* Access */
    121    ulAccess |= arg2 & OF_READ      ? GENERIC_READ                 : 0;
    122    ulAccess |= arg2 & OF_WRITE     ? GENERIC_WRITE                : 0;
    123    ulAccess |= arg2 & OF_READWRITE ? GENERIC_READ | GENERIC_WRITE : 0;
     121   switch(mode & 0x03)
     122   {
     123   case OF_READ:      ulAccess = GENERIC_READ; break;
     124   case OF_WRITE:     ulAccess = GENERIC_WRITE; break;
     125   case OF_READWRITE: ulAccess = GENERIC_READ | GENERIC_WRITE; break;
     126   default:           ulAccess = 0; break;
     127   }
    124128
    125129   /* Share */
    126    ulShare = arg2 & (OF_SHARE_COMPAT | OF_SHARE_DENY_NONE | OF_SHARE_DENY_READ | OF_SHARE_DENY_WRITE | OF_SHARE_EXCLUSIVE);
     130   ulShare = mode & (OF_SHARE_COMPAT | OF_SHARE_DENY_NONE | OF_SHARE_DENY_READ | OF_SHARE_DENY_WRITE | OF_SHARE_EXCLUSIVE);
    127131   if (ulShare == OF_SHARE_DENY_READ)
    128132      ulShare = FILE_SHARE_WRITE;
Note: See TracChangeset for help on using the changeset viewer.