Article: Q111591
Product(s): Microsoft Windows Software Development Kit
Version(s): WINDOWS:3.1
Operating System(s):
Keyword(s):
Last Modified: 06-NOV-1999
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Windows Software Development Kit (SDK) 3.1
-------------------------------------------------------------------------------
SYMPTOMS
========
Under a particular condition, IsBadStringPtr() will report that a bad string is
valid. If the pointer passed to IsBadStringPtr() refers to a block of memory of
size 0xFFFF and is filled with all nonzero data, IsBadStringPtr() returns 0.
STATUS
======
Microsoft has confirmed this to be a bug in Windows version 3.1. We are
researching this problem and will post new information here in the Microsoft
Knowledge Base as it becomes available.
MORE INFORMATION
================
For IsBadStringPtr() to validate a string, it must be passed a pointer to valid
memory and the string must contain a NULL character that terminates the string.
The following code illustrates the error:
#include <windows.h>
#include <windowsx.h>
#include <memory.h>
LPSTR lpPtr;
BOOL fRet;
// GlobalAllocPtr is a macro in WINDOWSX.H
lpPtr = GlobalAllocPtr(GMEM_MOVEABLE, 0XFFFF);
_fmemset(lpPtr, 'Q', 0xFFFF);
Ret = IsBadStringPtr(lpPtr, 0xFFFF);
if (fRet) // ... etcetera, fRet incorrectly contains zero.
Additional query words: buglist3.10 3.10
======================================================================
Keywords :
Technology : kbAudDeveloper kbWin3xSearch kbSDKSearch kbWinSDKSearch kbWinSDK310
Version : WINDOWS:3.1
=============================================================================