Translating a call to SQLGetDiagField() (from the application) to a call to SQLGetDiagFieldW() (to the driver) is not done properly. For example, if the application passes in a char* buffer and a 6 to the BufferLength parameter for SQLGetDiagField(), the driver should get a wchar_t* buffer and a BufferLength of 12 in SQLGetDiagFieldW(). However, the BufferLength parameter in the driver side SQLGetDiagFieldW() is still the same as in the application's call to SQLGetDiagField() (which is 6 in this example). Therefore, the conversion from SQLGetDiagField() to SQLGetDiagFieldW() is not done properly.
This problem has been determined in 3.52.3.