Ignore:
Timestamp:
Apr 10, 2007, 5:27:38 AM (14 years ago)
Author:
Paul Smedley
Message:

Updated source to 3.0.25rc1

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/samba/source/rpc_parse/parse_spoolss.c

    r1 r26  
    23892389BOOL smb_io_printer_info_3(const char *desc, RPC_BUFFER *buffer, PRINTER_INFO_3 *info, int depth)
    23902390{
     2391        uint32 offset = 0;
    23912392        prs_struct *ps=&buffer->prs;
    23922393
     
    23962397        buffer->struct_start=prs_offset(ps);
    23972398       
    2398         if (!prs_uint32("flags", ps, depth, &info->flags))
    2399                 return False;
     2399        if (MARSHALLING(ps)) {
     2400                /* Ensure the SD is 8 byte aligned in the buffer. */
     2401                uint start = prs_offset(ps); /* Remember the start position. */
     2402                uint off_val = 0;
     2403
     2404                /* Write a dummy value. */
     2405                if (!prs_uint32("offset", ps, depth, &off_val))
     2406                        return False;
     2407
     2408                /* 8 byte align. */
     2409                if (!prs_align_uint64(ps))
     2410                        return False;
     2411
     2412                /* Remember where we must seek back to write the SD. */
     2413                offset = prs_offset(ps);
     2414
     2415                /* Calculate the real offset for the SD. */
     2416
     2417                off_val = offset - start;
     2418
     2419                /* Seek back to where we store the SD offset & store. */
     2420                prs_set_offset(ps, start);
     2421                if (!prs_uint32("offset", ps, depth, &off_val))
     2422                        return False;
     2423
     2424                /* Return to after the 8 byte align. */
     2425                prs_set_offset(ps, offset);
     2426
     2427        } else {
     2428                if (!prs_uint32("offset", ps, depth, &offset))
     2429                        return False;
     2430                /* Seek within the buffer. */
     2431                if (!prs_set_offset(ps, offset))
     2432                        return False;
     2433        }
    24002434        if (!sec_io_desc("sec_desc", &info->secdesc, ps, depth))
    24012435                return False;
     
    31443178uint32 spoolss_size_printer_info_3(PRINTER_INFO_3 *info)
    31453179{
    3146         /* The 4 is for the self relative pointer.. */
    3147         /* JRA !!!! TESTME - WHAT ABOUT prs_align.... !!! */
    3148         return 4 + (uint32)sec_desc_size( info->secdesc );
     3180        /* The 8 is for the self relative pointer - 8 byte aligned.. */
     3181        return 8 + (uint32)sec_desc_size( info->secdesc );
    31493182}
    31503183
Note: See TracChangeset for help on using the changeset viewer.