Ignore:
Timestamp:
Apr 9, 2010, 3:51:41 PM (15 years ago)
Author:
Silvan Scherrer
Message:

Samba 3.5.x: trunk update to 3.5.2

Location:
trunk/server
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/server

  • trunk/server/source3/rpcclient/cmd_spoolss.c

    r414 r429  
    750750static void display_printer_data(const char *v,
    751751                                 enum winreg_Type type,
    752                                  union spoolss_PrinterData *r)
     752                                 uint8_t *data,
     753                                 uint32_t length)
    753754{
    754755        int i;
     756        union spoolss_PrinterData r;
     757        DATA_BLOB blob = data_blob_const(data, length);
     758        WERROR result;
     759
     760        result = pull_spoolss_PrinterData(talloc_tos(), &blob, &r, type);
     761        if (!W_ERROR_IS_OK(result)) {
     762                return;
     763        }
    755764
    756765        switch (type) {
    757766        case REG_DWORD:
    758                 printf("%s: REG_DWORD: 0x%08x\n", v, r->value);
     767                printf("%s: REG_DWORD: 0x%08x\n", v, r.value);
    759768                break;
    760769        case REG_SZ:
    761                 printf("%s: REG_SZ: %s\n", v, r->string);
     770                printf("%s: REG_SZ: %s\n", v, r.string);
    762771                break;
    763772        case REG_BINARY: {
    764773                char *hex = hex_encode_talloc(NULL,
    765                         r->binary.data, r->binary.length);
     774                        r.binary.data, r.binary.length);
    766775                size_t len;
    767776                printf("%s: REG_BINARY:", v);
     
    782791        case REG_MULTI_SZ:
    783792                printf("%s: REG_MULTI_SZ: ", v);
    784                 for (i=0; r->string_array[i] != NULL; i++) {
    785                         printf("%s ", r->string_array[i]);
     793                for (i=0; r.string_array[i] != NULL; i++) {
     794                        printf("%s ", r.string_array[i]);
    786795                }
    787796                printf("\n");
     
    805814        const char *valuename;
    806815        enum winreg_Type type;
    807         union spoolss_PrinterData data;
     816        uint8_t *data;
     817        uint32_t needed;
    808818
    809819        if (argc != 3) {
     
    838848                                               0,
    839849                                               &type,
     850                                               &needed,
    840851                                               &data);
    841852        if (!W_ERROR_IS_OK(result))
     
    844855        /* Display printer data */
    845856
    846         display_printer_data(valuename, type, &data);
     857        display_printer_data(valuename, type, data, needed);
    847858
    848859 done:
     
    867878
    868879        enum winreg_Type type;
    869         union spoolss_PrinterData data;
     880        uint8_t *data = NULL;
    870881        uint32_t offered = 0;
    871882        uint32_t needed;
     
    899910        /* Get printer info */
    900911
     912        data = talloc_zero_array(mem_ctx, uint8_t, offered);
     913        if (!data) {
     914                goto done;
     915        }
     916
    901917        status = rpccli_spoolss_GetPrinterDataEx(cli, mem_ctx,
    902918                                                 &pol,
    903919                                                 keyname,
    904920                                                 valuename,
     921                                                 &type,
     922                                                 data,
    905923                                                 offered,
    906                                                  &type,
    907                                                  &data,
    908924                                                 &needed,
    909925                                                 &result);
    910926        if (W_ERROR_EQUAL(result, WERR_MORE_DATA)) {
    911927                offered = needed;
     928                data = talloc_zero_array(mem_ctx, uint8_t, offered);
     929                if (!data) {
     930                        goto done;
     931                }
    912932                status = rpccli_spoolss_GetPrinterDataEx(cli, mem_ctx,
    913933                                                         &pol,
    914934                                                         keyname,
    915935                                                         valuename,
     936                                                         &type,
     937                                                         data,
    916938                                                         offered,
    917                                                          &type,
    918                                                          &data,
    919939                                                         &needed,
    920940                                                         &result);
     
    930950        /* Display printer data */
    931951
    932         display_printer_data(valuename, type, &data);
     952        display_printer_data(valuename, type, data, needed);
    933953
    934954
     
    23692389        enum winreg_Type type;
    23702390        union spoolss_PrinterData data;
     2391        DATA_BLOB blob;
    23712392
    23722393        /* parse the command arguments */
     
    24712492        }
    24722493
     2494        result = push_spoolss_PrinterData(mem_ctx, &blob, type, &data);
     2495        if (!W_ERROR_IS_OK(result)) {
     2496                goto done;
     2497        }
     2498
    24732499        status = rpccli_spoolss_SetPrinterData(cli, mem_ctx,
    24742500                                               &pol,
    24752501                                               argv[3], /* value_name */
    24762502                                               type,
    2477                                                data,
    2478                                                0, /* autocalculated size */
     2503                                               blob.data,
     2504                                               blob.length,
    24792505                                               &result);
    24802506        if (!W_ERROR_IS_OK(result)) {
     
    28832909                display_printer_data(info[i].value_name,
    28842910                                     info[i].type,
    2885                                      info[i].data);
     2911                                     info[i].data->data,
     2912                                     info[i].data->length);
    28862913        }
    28872914
Note: See TracChangeset for help on using the changeset viewer.