Author: rfm
Date: Wed Oct 29 12:54:42 2014
New Revision: 38138

URL: http://svn.gna.org/viewcvs/gnustep?rev=38138&view=rev
Log:
fix digest computation using gnutls ... check for error and allocate memory

Modified:
    libs/webservices/trunk/GWSHash.m

Modified: libs/webservices/trunk/GWSHash.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/webservices/trunk/GWSHash.m?rev=38138&r1=38137&r2=38138&view=diff
==============================================================================
--- libs/webservices/trunk/GWSHash.m    (original)
+++ libs/webservices/trunk/GWSHash.m    Wed Oct 29 12:54:42 2014
@@ -363,31 +363,31 @@
 
   if (IS_METHOD(algorithm, SHA256))
     {
-      gnutls_hash_fast(GNUTLS_DIG_SHA256, input, length, &buffer[0]);
-      hash = [NSData dataWithBytesNoCopy: &buffer[0]
-                                  length: 32
-                            freeWhenDone: NO];
+      if (gnutls_hash_fast(GNUTLS_DIG_SHA256, input, length, &buffer[0]) == 0)
+        {
+          hash = [NSData dataWithBytes: &buffer[0] length: 32];
+        }
     }
   else if (IS_METHOD(algorithm, SHA512))
     {
-      gnutls_hash_fast(GNUTLS_DIG_SHA512, input, length, &buffer[0]);
-      hash = [NSData dataWithBytesNoCopy: &buffer[0]
-                                  length: 64
-                            freeWhenDone: NO];
+      if (gnutls_hash_fast(GNUTLS_DIG_SHA512, input, length, &buffer[0]) == 0)
+        {
+          hash = [NSData dataWithBytes: &buffer[0] length: 64];
+        }
     }
   else if (IS_METHOD(algorithm, SHA1))
     {
-      gnutls_hash_fast(GNUTLS_DIG_SHA1, input, length, &buffer[0]);
-      hash = [NSData dataWithBytesNoCopy: &buffer[0]
-                                  length: 20
-                            freeWhenDone: NO];
+      if (gnutls_hash_fast(GNUTLS_DIG_SHA1, input, length, &buffer[0]) == 0)
+        {
+          hash = [NSData dataWithBytes: &buffer[0] length: 20];
+        }
     }
   else if (IS_METHOD(algorithm, MD5))
     { 
-      gnutls_hash_fast(GNUTLS_DIG_MD5, input, length, &buffer[0]);
-      hash = [NSData dataWithBytesNoCopy: &buffer[0]
-                                  length: 16
-                            freeWhenDone: NO];
+      if (gnutls_hash_fast(GNUTLS_DIG_MD5, input, length, &buffer[0]) == 0)
+        {
+          hash = [NSData dataWithBytes: &buffer[0] length: 16];
+        }
     }
   return hash;
 }
@@ -405,41 +405,41 @@
 
   if (IS_METHOD(algorithm, SHA256))
     {
-      gnutls_hmac_fast(GNUTLS_MAC_SHA256,
-        inKey, keyLen, input, length, &buffer[0]);
-      hash = [NSData dataWithBytesNoCopy: &buffer[0]
-                                  length: 32
-                            freeWhenDone: NO];
+      if (gnutls_hmac_fast(GNUTLS_MAC_SHA256,
+        inKey, keyLen, input, length, &buffer[0]) == 0)
+        {
+          hash = [NSData dataWithBytes: &buffer[0] length: 32];
+        }
     }
   else if (IS_METHOD(algorithm, SHA512))
     {
-      gnutls_hmac_fast(GNUTLS_MAC_SHA512,
-        inKey, keyLen, input, length, &buffer[0]);
-      hash = [NSData dataWithBytesNoCopy: &buffer[0]
-                                  length: 64
-                            freeWhenDone: NO];
+      if (gnutls_hmac_fast(GNUTLS_MAC_SHA512,
+        inKey, keyLen, input, length, &buffer[0]) == 0)
+        {
+          hash = [NSData dataWithBytes: &buffer[0] length: 64];
+        }
     }
   else if (IS_METHOD(algorithm, SHA1))
     {
-      gnutls_hmac_fast(GNUTLS_MAC_SHA1,
-        inKey, keyLen, input, length, &buffer[0]);
-      hash = [NSData dataWithBytesNoCopy: &buffer[0]
-                                  length: 20
-                            freeWhenDone: NO];
+      if (gnutls_hmac_fast(GNUTLS_MAC_SHA1,
+        inKey, keyLen, input, length, &buffer[0]) == 0)
+        {
+          hash = [NSData dataWithBytes: &buffer[0] length: 20];
+        }
     }
   else if (IS_METHOD(algorithm, MD5))
     { 
-      gnutls_hmac_fast(GNUTLS_MAC_MD5,
-        inKey, keyLen, input, length, &buffer[0]);
-      hash = [NSData dataWithBytesNoCopy: &buffer[0]
-                                  length: 16
-                            freeWhenDone: NO];
+      if (gnutls_hmac_fast(GNUTLS_MAC_MD5,
+        inKey, keyLen, input, length, &buffer[0]) == 0)
+        {
+          hash = [NSData dataWithBytes: &buffer[0] length: 16];
+        }
     }    
   return hash;
 }
 #else
 
-#define computeDigest(alg, dataToHash)\
+  #define computeDigest(alg, dataToHash)\
   computeDigestInternal(alg, dataToHash)
 #define computeHMAC(alg, dataToHash, key)\
   computeHMACInternal(alg, dataToHash, key)


_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs

Reply via email to