The branch, v3-3-test has been updated
       via  3517388b5d5439ffe3f9629aaf826fa1dfbb4ba7 (commit)
      from  f846e0fcdf62333b44a16e5a392930189b512f9b (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test


- Log -----------------------------------------------------------------
commit 3517388b5d5439ffe3f9629aaf826fa1dfbb4ba7
Author: Günther Deschner <g...@samba.org>
Date:   Thu Mar 19 16:42:54 2009 +0100

    s3-krb5: Fix Coverity #722 (RESOURCE_LEAK).
    
    Guenther
    (cherry picked from commit 1524abd8bf12d82e1fb0063585fc9a465fc7bf9c)

-----------------------------------------------------------------------

Summary of changes:
 source/libsmb/clikrb5.c |   30 ++++++++++++++++++------------
 1 files changed, 18 insertions(+), 12 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/libsmb/clikrb5.c b/source/libsmb/clikrb5.c
index 3851dce..1e2fe01 100644
--- a/source/libsmb/clikrb5.c
+++ b/source/libsmb/clikrb5.c
@@ -868,24 +868,30 @@ failed:
 
  bool get_krb5_smb_session_key(krb5_context context, krb5_auth_context 
auth_context, DATA_BLOB *session_key, bool remote)
  {
-       krb5_keyblock *skey;
-       krb5_error_code err;
-       bool ret = False;
+       krb5_keyblock *skey = NULL;
+       krb5_error_code err = 0;
+       bool ret = false;
 
-       if (remote)
+       if (remote) {
                err = krb5_auth_con_getremotesubkey(context, auth_context, 
&skey);
-       else
+       } else {
                err = krb5_auth_con_getlocalsubkey(context, auth_context, 
&skey);
-       if (err == 0 && skey != NULL) {
-               DEBUG(10, ("Got KRB5 session key of length %d\n",  
(int)KRB5_KEY_LENGTH(skey)));
-               *session_key = data_blob(KRB5_KEY_DATA(skey), 
KRB5_KEY_LENGTH(skey));
-               dump_data_pw("KRB5 Session Key:\n", session_key->data, 
session_key->length);
+       }
 
-               ret = True;
+       if (err || skey == NULL) {
+               DEBUG(10, ("KRB5 error getting session key %d\n", err));
+               goto done;
+       }
 
+       DEBUG(10, ("Got KRB5 session key of length %d\n",  
(int)KRB5_KEY_LENGTH(skey)));
+       *session_key = data_blob(KRB5_KEY_DATA(skey), KRB5_KEY_LENGTH(skey));
+       dump_data_pw("KRB5 Session Key:\n", session_key->data, 
session_key->length);
+
+       ret = true;
+
+ done:
+       if (skey) {
                krb5_free_keyblock(context, skey);
-       } else {
-               DEBUG(10, ("KRB5 error getting session key %d\n", err));
        }
 
        return ret;


-- 
Samba Shared Repository

Reply via email to