r148: Ensure we do not dereference a null pointer when we return the user
authorAndrew Bartlett <abartlet@samba.org>
Sat, 10 Apr 2004 19:24:31 +0000 (19:24 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:51:11 +0000 (10:51 -0500)
session key.
(This used to be commit b09d333aed00a7ea599f45105e913d3a3ea25b31)

source3/libsmb/ntlm_check.c

index a7764f9e98639945a1af6a952cd56cd39e03c369..1d02b03e0c367d620b8501b1a19ed7c3d821360d 100644 (file)
@@ -330,7 +330,9 @@ NTSTATUS ntlm_password_check(TALLOC_CTX *mem_ctx,
                                        uint8 first_8_lm_hash[16];
                                        memcpy(first_8_lm_hash, lm_pw, 8);
                                        memset(first_8_lm_hash + 8, '\0', 8);
-                                       *lm_sess_key = data_blob(first_8_lm_hash, 16);
+                                       if (lm_sess_key) {
+                                               *lm_sess_key = data_blob(first_8_lm_hash, 16);
+                                       }
                                }
                                return NT_STATUS_OK;
                        } else {
@@ -371,8 +373,13 @@ NTSTATUS ntlm_password_check(TALLOC_CTX *mem_ctx,
                        uint8 first_8_lm_hash[16];
                        memcpy(first_8_lm_hash, lm_pw, 8);
                        memset(first_8_lm_hash + 8, '\0', 8);
-                       *user_sess_key = data_blob(first_8_lm_hash, 16);
-                       *lm_sess_key = data_blob(first_8_lm_hash, 16);
+                       if (user_sess_key) {
+                               *user_sess_key = data_blob(first_8_lm_hash, 16);
+                       }
+
+                       if (lm_sess_key) {
+                               *lm_sess_key = data_blob(first_8_lm_hash, 16);
+                       }
                        return NT_STATUS_OK;
                }
        }
@@ -431,8 +438,13 @@ NTSTATUS ntlm_password_check(TALLOC_CTX *mem_ctx,
                                uint8 first_8_lm_hash[16];
                                memcpy(first_8_lm_hash, lm_pw, 8);
                                memset(first_8_lm_hash + 8, '\0', 8);
-                               *user_sess_key = data_blob(first_8_lm_hash, 16);
-                               *lm_sess_key = data_blob(first_8_lm_hash, 16);
+                               if (user_sess_key) {
+                                       *user_sess_key = data_blob(first_8_lm_hash, 16);
+                               }
+
+                               if (lm_sess_key) {
+                                       *lm_sess_key = data_blob(first_8_lm_hash, 16);
+                               }
                        }
                        return NT_STATUS_OK;
                }