Changeset 427 for vendor/current/source3/rpc_server
- Timestamp:
- Apr 9, 2010, 3:20:58 PM (15 years ago)
- Location:
- vendor/current/source3/rpc_server
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
vendor/current/source3/rpc_server/srv_netlog_nt.c
r414 r427 1114 1114 case NetlogonInteractiveTransitiveInformation: 1115 1115 case NetlogonServiceTransitiveInformation: 1116 nt_username = logon->password->identity_info.account_name.string; 1117 nt_domain = logon->password->identity_info.domain_name.string; 1118 nt_workstation = logon->password->identity_info.workstation.string; 1116 nt_username = logon->password->identity_info.account_name.string ? 1117 logon->password->identity_info.account_name.string : ""; 1118 nt_domain = logon->password->identity_info.domain_name.string ? 1119 logon->password->identity_info.domain_name.string : ""; 1120 nt_workstation = logon->password->identity_info.workstation.string ? 1121 logon->password->identity_info.workstation.string : ""; 1119 1122 1120 1123 DEBUG(3,("SAM Logon (Interactive). Domain:[%s]. ", lp_workgroup())); … … 1122 1125 case NetlogonNetworkInformation: 1123 1126 case NetlogonNetworkTransitiveInformation: 1124 nt_username = logon->network->identity_info.account_name.string; 1125 nt_domain = logon->network->identity_info.domain_name.string; 1126 nt_workstation = logon->network->identity_info.workstation.string; 1127 nt_username = logon->network->identity_info.account_name.string ? 1128 logon->network->identity_info.account_name.string : ""; 1129 nt_domain = logon->network->identity_info.domain_name.string ? 1130 logon->network->identity_info.domain_name.string : ""; 1131 nt_workstation = logon->network->identity_info.workstation.string ? 1132 logon->network->identity_info.workstation.string : ""; 1127 1133 1128 1134 DEBUG(3,("SAM Logon (Network). Domain:[%s]. ", lp_workgroup())); -
vendor/current/source3/rpc_server/srv_spoolss_nt.c
r414 r427 7697 7697 goto done; 7698 7698 } 7699 *r->out.value_needed = strlen_m (regval_name(val));7699 *r->out.value_needed = strlen_m_term(regval_name(val)) * 2; 7700 7700 } else { 7701 7701 r->out.value_name = NULL; … … 7742 7742 r2.in.type = r->in.type; 7743 7743 r2.in.data = r->in.data; 7744 r2.in. _offered = r->in._offered;7744 r2.in.offered = r->in.offered; 7745 7745 7746 7746 return _spoolss_SetPrinterDataEx(p, &r2); … … 8590 8590 if (Printer->printer_type == SPLHND_SERVER) { 8591 8591 8592 union spoolss_PrinterData data; 8593 8592 8594 result = getprinterdata_printer_server(p->mem_ctx, 8593 8595 r->in.value_name, 8594 8596 r->out.type, 8595 r->out.data); 8596 goto done; 8597 &data); 8598 if (!W_ERROR_IS_OK(result)) { 8599 goto done; 8600 } 8601 8602 result = push_spoolss_PrinterData(p->mem_ctx, &blob, 8603 *r->out.type, &data); 8604 if (!W_ERROR_IS_OK(result)) { 8605 goto done; 8606 } 8607 8608 *r->out.needed = blob.length; 8609 8610 if (r->in.offered >= *r->out.needed) { 8611 memcpy(r->out.data, blob.data, blob.length); 8612 } 8613 8614 return SPOOLSS_BUFFER_OK(WERR_OK, WERR_MORE_DATA); 8597 8615 } 8598 8616 … … 8619 8637 *r->out.type = REG_DWORD; 8620 8638 *r->out.needed = 4; 8621 r->out.data->value = printer->info_2->changeid; 8622 result = WERR_OK; 8639 if (r->in.offered >= *r->out.needed) { 8640 SIVAL(r->out.data, 0, printer->info_2->changeid); 8641 result = WERR_OK; 8642 } 8623 8643 goto done; 8624 8644 } … … 8641 8661 *r->out.type = regval_type(val); 8642 8662 8643 blob = data_blob_const(regval_data_p(val), regval_size(val)); 8644 8645 result = pull_spoolss_PrinterData(p->mem_ctx, &blob, 8646 r->out.data, 8647 *r->out.type); 8648 8663 if (r->in.offered >= *r->out.needed) { 8664 memcpy(r->out.data, regval_data_p(val), regval_size(val)); 8665 } 8649 8666 done: 8650 8667 if (printer) { … … 8656 8673 } 8657 8674 8658 *r->out.needed = ndr_size_spoolss_PrinterData(r->out.data, *r->out.type, NULL, 0);8659 8675 *r->out.type = SPOOLSS_BUFFER_OK(*r->out.type, REG_NONE); 8660 8676 r->out.data = SPOOLSS_BUFFER_OK(r->out.data, r->out.data); … … 8675 8691 Printer_entry *Printer = find_printer_index_by_hnd(p, r->in.handle); 8676 8692 char *oid_string; 8677 DATA_BLOB blob;8678 8693 8679 8694 DEBUG(4,("_spoolss_SetPrinterDataEx\n")); … … 8725 8740 } 8726 8741 8727 result = push_spoolss_PrinterData(p->mem_ctx, &blob,8728 r->in.type, &r->in.data);8729 if (!W_ERROR_IS_OK(result)) {8730 goto done;8731 }8732 8733 8742 /* 8734 8743 * When client side code sets a magic printer data key, detect it and save … … 8738 8747 if ((r->in.type == REG_BINARY) && strequal(r->in.value_name, PHANTOM_DEVMODE_KEY)) { 8739 8748 /* Set devmode and printer initialization info */ 8740 result = save_driver_init(printer, 2, blob.data, blob.length);8749 result = save_driver_init(printer, 2, r->in.data, r->in.offered); 8741 8750 8742 8751 srv_spoolss_reset_printerdata(printer->info_2->drivername); … … 8748 8757 8749 8758 result = set_printer_dataex(printer, r->in.key_name, r->in.value_name, 8750 r->in.type, blob.data, blob.length);8759 r->in.type, r->in.data, r->in.offered); 8751 8760 8752 8761 if (W_ERROR_IS_OK(result)) { … … 8986 8995 struct spoolss_PrinterEnumValues *r) 8987 8996 { 8988 WERROR result; 8989 8990 r->data = TALLOC_ZERO_P(mem_ctx, union spoolss_PrinterData); 8997 r->data = TALLOC_ZERO_P(mem_ctx, DATA_BLOB); 8991 8998 W_ERROR_HAVE_NO_MEMORY(r->data); 8992 8999 … … 8998 9005 8999 9006 if (r->data_length) { 9000 DATA_BLOB blob = data_blob_const(regval_data_p(v), 9001 regval_size(v)); 9002 result = pull_spoolss_PrinterData(mem_ctx, &blob, 9003 r->data, 9004 r->type); 9005 if (!W_ERROR_IS_OK(result)) { 9006 return result; 9007 } 9007 *r->data = data_blob_talloc(r->data, regval_data_p(v), regval_size(v)); 9008 9008 } 9009 9009 -
vendor/current/source3/rpc_server/srv_winreg_nt.c
r414 r427 231 231 return WERR_BADFID; 232 232 233 if ((r->out.data_length == NULL) || (r->out.type == NULL) ) {233 if ((r->out.data_length == NULL) || (r->out.type == NULL) || (r->out.data_size == NULL)) { 234 234 return WERR_INVALID_PARAM; 235 235 } 236 236 237 *r->out.data_length = *r->out.type = REG_NONE; 238 239 DEBUG(7,("_reg_info: policy key name = [%s]\n", regkey->key->name)); 240 DEBUG(7,("_reg_info: policy key type = [%08x]\n", regkey->key->type)); 237 DEBUG(7,("_winreg_QueryValue: policy key name = [%s]\n", regkey->key->name)); 238 DEBUG(7,("_winreg_QueryValue: policy key type = [%08x]\n", regkey->key->type)); 241 239 242 240 /* Handle QueryValue calls on HKEY_PERFORMANCE_DATA */ … … 288 286 &val); 289 287 if (!W_ERROR_IS_OK(status)) { 288 289 DEBUG(10,("_winreg_QueryValue: reg_queryvalue failed with: %s\n", 290 win_errstr(status))); 291 290 292 if (r->out.data_size) { 291 293 *r->out.data_size = 0; … … 307 309 } 308 310 309 *r->out.data_length = outbuf_size; 310 311 if ( *r->in.data_size == 0 || !r->out.data ) { 311 status = WERR_BADFILE; 312 313 if (*r->in.data_size < outbuf_size) { 314 *r->out.data_size = outbuf_size; 315 status = r->in.data ? WERR_MORE_DATA : WERR_OK; 316 } else { 317 *r->out.data_length = outbuf_size; 318 *r->out.data_size = outbuf_size; 319 memcpy(r->out.data, outbuf, outbuf_size); 312 320 status = WERR_OK; 313 } else if ( *r->out.data_length > *r->in.data_size ) { 314 status = WERR_MORE_DATA; 315 } else { 316 memcpy( r->out.data, outbuf, *r->out.data_length ); 317 status = WERR_OK; 318 } 319 320 *r->out.data_size = *r->out.data_length; 321 } 321 322 322 323 if (free_prs) prs_mem_free(&prs_hkpd);
Note:
See TracChangeset
for help on using the changeset viewer.