There is a bug in
the definition of LSH_DLGINFO_EX_V1_SZ in 2.6.3 and possibly earlier
versions.
The define
is:
#define LSH_DLGINFO_EX_V1_SZ (sizeof(DWORD) + 3 *
sizeof(LPSTR) * 8 * sizeof(int))
In fact, it should
be:
#define LSH_DLGINFO_EX_V1_SZ (sizeof(DWORD) + 3 *
sizeof(LPSTR) + 8 * sizeof(int))
The size of the V1
structure should be 48 bytes but due to the typo, it thinks the size is 388
bytes.
The source in
lsh_pwd.c should probably read:
if ((lpdi->size != LSH_DLGINFO_EX_V1_SZ
&&
lpdi->size !=
sizeof(LSH_DLGINFO_EX)
lpdi-_size != 388)
||
lpdi->dlgtype !=
DLGTYPE_PASSWD) {
...
to allow existing
applications not to generate error messages when the source is updated or when
working with versions of the client which use the broken
definition.
Regards,
Pierre Goyette
Senior Director, R&D
Hummingbird Ltd.
Montreal, Quebec,
Canada