Paul Gofman : bcrypt: Pad exported datums in key_export_ecc().

Alexandre Julliard julliard at winehq.org
Mon Jan 18 17:00:37 CST 2021


Module: wine
Branch: master
Commit: 4bf53710111a24793db78e735586b29f1b005ee0
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=4bf53710111a24793db78e735586b29f1b005ee0

Author: Paul Gofman <pgofman at codeweavers.com>
Date:   Mon Jan 18 12:38:27 2021 +0100

bcrypt: Pad exported datums in key_export_ecc().

Signed-off-by: Paul Gofman <pgofman at codeweavers.com>
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/bcrypt/gnutls.c | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

diff --git a/dlls/bcrypt/gnutls.c b/dlls/bcrypt/gnutls.c
index 52c70d61cf6..5bddc621f80 100644
--- a/dlls/bcrypt/gnutls.c
+++ b/dlls/bcrypt/gnutls.c
@@ -1000,7 +1000,7 @@ static NTSTATUS CDECL key_export_ecc( struct key *key, UCHAR *buf, ULONG len, UL
     gnutls_ecc_curve_t curve;
     gnutls_datum_t x, y, d;
     DWORD magic, size;
-    UCHAR *src, *dst;
+    UCHAR *dst;
     int ret;
 
     switch (key->alg_id)
@@ -1040,19 +1040,13 @@ static NTSTATUS CDECL key_export_ecc( struct key *key, UCHAR *buf, ULONG len, UL
         ecc_blob->cbKey   = size;
 
         dst = (UCHAR *)(ecc_blob + 1);
-        if (x.size == size + 1) src = x.data + 1;
-        else src = x.data;
-        memcpy( dst, src, size );
-
+        export_gnutls_datum( dst, size, &x, NULL );
         dst += size;
-        if (y.size == size + 1) src = y.data + 1;
-        else src = y.data;
-        memcpy( dst, src, size );
 
+        export_gnutls_datum( dst, size, &y, NULL );
         dst += size;
-        if (d.size == size + 1) src = d.data + 1;
-        else src = d.data;
-        memcpy( dst, src, size );
+
+        export_gnutls_datum( dst, size, &d, NULL );
     }
 
     free( x.data ); free( y.data ); free( d.data );




More information about the wine-cvs mailing list