[CRYPT32] Sync with Wine Staging 3.17. CORE-15127
[reactos.git] / dll / win32 / crypt32 / msg.c
index c9a0fe1..005fbf2 100644 (file)
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
+#include "config.h"
+#include "wine/port.h"
+
+#include <stdarg.h>
+#define NONAMELESSUNION
+#include "windef.h"
+#include "winbase.h"
+#include "wincrypt.h"
+#include "snmp.h"
+
+#include "wine/debug.h"
+#include "wine/exception.h"
 #include "crypt32_private.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(crypt);
@@ -163,7 +175,7 @@ static BOOL CRYPT_EncodeDataContentInfoHeader(const CDataEncodeMsg *msg,
         };
 
         ret = CRYPT_AsnEncodeSequence(X509_ASN_ENCODING, items,
-         sizeof(items) / sizeof(items[0]), CRYPT_ENCODE_ALLOC_FLAG, NULL,
+         ARRAY_SIZE(items), CRYPT_ENCODE_ALLOC_FLAG, NULL,
          (LPBYTE)&header->pbData, &header->cbData);
         if (ret)
         {
@@ -2715,12 +2727,10 @@ static BOOL CRYPT_CopySignerInfo(void *pvData, DWORD *pcbData,
     size += CRYPT_SizeOfAttributes(&in->UnauthAttrs);
     if (!pvData)
     {
-        *pcbData = size;
         ret = TRUE;
     }
     else if (*pcbData < size)
     {
-        *pcbData = size;
         SetLastError(ERROR_MORE_DATA);
         ret = FALSE;
     }
@@ -2753,6 +2763,7 @@ static BOOL CRYPT_CopySignerInfo(void *pvData, DWORD *pcbData,
             CRYPT_CopyAttributes(&out->UnauthAttrs, &in->UnauthAttrs, &nextData);
         }
     }
+    *pcbData = size;
     TRACE("returning %d\n", ret);
     return ret;
 }