Ignore:
Timestamp:
Jun 10, 2002, 7:46:53 PM (23 years ago)
Author:
sandervl
Message:

Don't use user supplied pointers in ReadFile/WriteFile for overlapped IO

File:
1 edited

Legend:

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

    r7632 r8638  
    1 /* $Id: overlappedio.cpp,v 1.14 2001-12-14 13:45:19 sandervl Exp $ */
     1/* $Id: overlappedio.cpp,v 1.15 2002-06-10 17:46:53 sandervl Exp $ */
    22
    33/*
     
    243243                    lpOverlapped->Internal     = lpRequest->dwLastError;
    244244                    lpOverlapped->InternalHigh = dwResult;
    245                     if(lpRequest->lpdwResult) {
    246                         *lpRequest->lpdwResult = dwResult;
    247                     }
     245
     246                    //must NOT store result in specified location!!! (stack corruption)
     247                    //if(lpRequest->lpdwResult) {
     248                    //    *lpRequest->lpdwResult = dwResult;
     249                    //}
    248250#ifdef DEBUG
    249251                    if(lpRequest->dwAsyncType == ASYNCIO_READ) {
     
    330332    lpRequest->lpBuffer            = lpBuffer;
    331333    lpRequest->nNumberOfBytes      = nNumberOfBytesToWrite;
    332     lpRequest->lpdwResult          = lpNumberOfBytesWritten;
     334    //must NOT store result in specified location!!! (stack corruption)
     335////    lpRequest->lpdwResult          = lpNumberOfBytesWritten;
     336    lpRequest->lpdwResult          = NULL;
    333337    lpRequest->lpOverlapped        = lpOverlapped;
    334338    lpRequest->lpCompletionRoutine = lpCompletionRoutine;
     
    391395    lpRequest->lpBuffer            = lpBuffer;
    392396    lpRequest->nNumberOfBytes      = nNumberOfBytesToRead;
    393     lpRequest->lpdwResult          = lpNumberOfBytesRead;
     397    //must NOT store result in specified location!!! (stack corruption)
     398////    lpRequest->lpdwResult          = lpNumberOfBytesRead;
     399    lpRequest->lpdwResult          = NULL;
    394400    lpRequest->lpOverlapped        = lpOverlapped;
    395401    lpRequest->lpCompletionRoutine = lpCompletionRoutine;
     
    451457    lpRequest->lpBuffer            = NULL;
    452458    lpRequest->nNumberOfBytes      = 0;
     459    //must store result also in specified location
    453460    lpRequest->lpdwResult          = lpfdwEvtMask;
    454461    lpRequest->lpOverlapped        = lpOverlapped;
Note: See TracChangeset for help on using the changeset viewer.