Fix two memleaks in the encryption code
authorVolker Lendecke <vl@samba.org>
Tue, 24 Mar 2009 20:57:01 +0000 (21:57 +0100)
committerVolker Lendecke <vl@samba.org>
Tue, 24 Mar 2009 21:00:10 +0000 (22:00 +0100)
ntlmssp_seal_packet creates its own signature data blob, which we then
have to free.

Jeremy, please check and merge appropriately (Yes, I'm asking you to do the
janitor work, I want you to *look* at this :-))

Volker

source3/libsmb/smb_seal.c

index 795c8bc14ca7984ec50bef5f97ad9aab8ac9bb16..2f7305c5b65466c95439391b227fda70e12d18c8 100644 (file)
@@ -136,7 +136,7 @@ NTSTATUS common_ntlm_encrypt_buffer(NTLMSSP_STATE *ntlmssp_state,
 
        smb_set_enclen(buf_out, smb_len(buf) + NTLMSSP_SIG_SIZE, enc_ctx_num);
 
-       sig = data_blob(NULL, NTLMSSP_SIG_SIZE);
+       ZERO_STRUCT(sig);
 
        status = ntlmssp_seal_packet(ntlmssp_state,
                (unsigned char *)buf_out + 8 + NTLMSSP_SIG_SIZE, /* 4 byte len + 0xFF 'S' <enc> <ctx> */
@@ -153,6 +153,7 @@ NTSTATUS common_ntlm_encrypt_buffer(NTLMSSP_STATE *ntlmssp_state,
 
        /* First 16 data bytes are signature for SSPI compatibility. */
        memcpy(buf_out + 8, sig.data, NTLMSSP_SIG_SIZE);
+       data_blob_free(&sig);
        *ppbuf_out = buf_out;
        return NT_STATUS_OK;
 }