Changeset 427 for vendor/current/source3/rpc_server/srv_spoolss_nt.c
- Timestamp:
- Apr 9, 2010, 3:20:58 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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; 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; 7745 7745 7746 7746 return _spoolss_SetPrinterDataEx(p, &r2); … … 8590 8590 if (Printer->printer_type == SPLHND_SERVER) { 8591 8591 8592 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, ); 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, ); 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
Note:
See TracChangeset
for help on using the changeset viewer.
