Changeset 165 for branches/samba-3.0/source/libsmb/cliconnect.c
- Timestamp:
- Mar 11, 2009, 9:14:55 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/samba-3.0/source/libsmb/cliconnect.c
r140 r165 539 539 #define BASE_SESSSETUP_BLOB_PACKET_SIZE (35 + 24 + 22) 540 540 541 static BOOL cli_session_setup_blob(struct cli_state *cli, DATA_BLOB blob , DATA_BLOB session_key_krb5)541 static BOOL cli_session_setup_blob(struct cli_state *cli, DATA_BLOB blob) 542 542 { 543 543 int32 remaining = blob.length; … … 563 563 remaining -= max_blob_size; 564 564 } else { 565 DATA_BLOB null_blob = data_blob(NULL, 0);566 567 565 send_blob.length = remaining; 568 566 remaining = 0; 569 570 /* This is the last packet in the sequence - turn signing on. */571 cli_simple_set_signing(cli, session_key_krb5, null_blob);572 567 } 573 568 … … 617 612 DATA_BLOB negTokenTarg; 618 613 DATA_BLOB session_key_krb5; 614 DATA_BLOB null_blob = data_blob(NULL, 0); 615 NTSTATUS nt_status; 616 BOOL res; 619 617 int rc; 618 619 cli_temp_set_signing(cli); 620 620 621 621 DEBUG(2,("Doing kerberos session setup\n")); … … 634 634 #endif 635 635 636 if (!cli_session_setup_blob(cli, negTokenTarg, session_key_krb5)) { 637 data_blob_free(&negTokenTarg); 638 data_blob_free(&session_key_krb5); 639 return ADS_ERROR_NT(cli_nt_error(cli)); 636 if (!cli_session_setup_blob(cli, negTokenTarg)) { 637 nt_status = cli_nt_error(cli); 638 goto nt_error; 639 } 640 641 if (cli_is_error(cli)) { 642 nt_status = cli_nt_error(cli); 643 if (NT_STATUS_IS_OK(nt_status)) { 644 nt_status = NT_STATUS_UNSUCCESSFUL; 645 } 646 goto nt_error; 640 647 } 641 648 642 649 cli_set_session_key(cli, session_key_krb5); 650 651 res = cli_simple_set_signing(cli, session_key_krb5, null_blob); 652 if (res) { 653 /* 'resign' the last message, so we get the right sequence numbers 654 for checking the first reply from the server */ 655 cli_calculate_sign_mac(cli); 656 657 if (!cli_check_sign_mac(cli)) { 658 nt_status = NT_STATUS_ACCESS_DENIED; 659 goto nt_error; 660 } 661 } 643 662 644 663 data_blob_free(&negTokenTarg); 645 664 data_blob_free(&session_key_krb5); 646 665 647 if (cli_is_error(cli)) { 648 if (NT_STATUS_IS_OK(cli_nt_error(cli))) { 649 return ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL); 650 } 651 } 652 return ADS_ERROR_NT(cli_nt_error(cli)); 666 return ADS_ERROR_NT(NT_STATUS_OK); 667 668 nt_error: 669 data_blob_free(&negTokenTarg); 670 data_blob_free(&session_key_krb5); 671 cli->vuid = 0; 672 return ADS_ERROR_NT(nt_status); 653 673 } 654 674 #endif /* HAVE_KRB5 */
Note:
See TracChangeset
for help on using the changeset viewer.