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