| 2568 | } |
| 2569 | |
| 2570 | static bool_t xdr_blobBuffer(RemoteXdr* xdrs, RemBlobBuffer* buff) |
| 2571 | { |
| 2572 | SLONG len; |
| 2573 | UCHAR* data; |
| 2574 | static const SCHAR filler[4] = { 0, 0, 0, 0 }; |
| 2575 | |
| 2576 | switch (xdrs->x_op) |
| 2577 | { |
| 2578 | case XDR_ENCODE: |
| 2579 | len = buff->getCount(); |
| 2580 | if (!xdr_long(xdrs, &len)) |
| 2581 | return FALSE; |
| 2582 | |
| 2583 | data = buff->begin(); |
| 2584 | if (len && !xdrs->x_putbytes(reinterpret_cast<const SCHAR*>(data), len)) |
| 2585 | return FALSE; |
| 2586 | |
| 2587 | len = (4 - len) & 3; |
| 2588 | if (len) |
| 2589 | return xdrs->x_putbytes(filler, len); |
| 2590 | |
| 2591 | return TRUE; |
| 2592 | |
| 2593 | case XDR_DECODE: |
| 2594 | if (!xdr_long(xdrs, &len)) |
| 2595 | return FALSE; |
| 2596 | |
| 2597 | if (len) |
| 2598 | { |
| 2599 | data = buff->getBuffer(len); |
| 2600 | if (!xdrs->x_getbytes(reinterpret_cast<SCHAR*>(data), len)) |
| 2601 | return FALSE; |
| 2602 | } |
| 2603 | |
| 2604 | len = (4 - len) & 3; |
| 2605 | if (len) |
| 2606 | { |
| 2607 | SCHAR trash[4]; |
| 2608 | return xdrs->x_getbytes(trash, len); |
| 2609 | } |
| 2610 | |
| 2611 | return TRUE; |
| 2612 | |
| 2613 | case XDR_FREE: |
| 2614 | return TRUE; |
| 2615 | } |
| 2616 | |
| 2617 | return FALSE; |
| 2618 | } |
no test coverage detected