tdr 30 source4/lib/tdr/tdr.c #define TDR_PUSH_NEED_BYTES(tdr, n) TDR_CHECK(tdr_push_expand(tdr, tdr->data.length+(n)))
tdr 32 source4/lib/tdr/tdr.c #define TDR_PULL_NEED_BYTES(tdr, n) do { \
tdr 33 source4/lib/tdr/tdr.c if ((n) > tdr->data.length || tdr->offset + (n) > tdr->data.length) { \
tdr 38 source4/lib/tdr/tdr.c #define TDR_BE(tdr) ((tdr)->flags & TDR_BIG_ENDIAN)
tdr 40 source4/lib/tdr/tdr.c #define TDR_CVAL(tdr, ofs) CVAL(tdr->data.data,ofs)
tdr 41 source4/lib/tdr/tdr.c #define TDR_SVAL(tdr, ofs) (TDR_BE(tdr)?RSVAL(tdr->data.data,ofs):SVAL(tdr->data.data,ofs))
tdr 42 source4/lib/tdr/tdr.c #define TDR_IVAL(tdr, ofs) (TDR_BE(tdr)?RIVAL(tdr->data.data,ofs):IVAL(tdr->data.data,ofs))
tdr 43 source4/lib/tdr/tdr.c #define TDR_SCVAL(tdr, ofs, v) SCVAL(tdr->data.data,ofs,v)
tdr 44 source4/lib/tdr/tdr.c #define TDR_SSVAL(tdr, ofs, v) do { if (TDR_BE(tdr)) { RSSVAL(tdr->data.data,ofs,v); } else SSVAL(tdr->data.data,ofs,v); } while (0)
tdr 45 source4/lib/tdr/tdr.c #define TDR_SIVAL(tdr, ofs, v) do { if (TDR_BE(tdr)) { RSIVAL(tdr->data.data,ofs,v); } else SIVAL(tdr->data.data,ofs,v); } while (0)
tdr 50 source4/lib/tdr/tdr.c NTSTATUS tdr_push_expand(struct tdr_push *tdr, uint32_t size)
tdr 52 source4/lib/tdr/tdr.c if (talloc_get_size(tdr->data.data) >= size) {
tdr 56 source4/lib/tdr/tdr.c tdr->data.data = talloc_realloc(tdr, tdr->data.data, uint8_t, tdr->data.length + TDR_BASE_MARSHALL_SIZE);
tdr 58 source4/lib/tdr/tdr.c if (tdr->data.data == NULL)
tdr 65 source4/lib/tdr/tdr.c NTSTATUS tdr_pull_uint8(struct tdr_pull *tdr, TALLOC_CTX *ctx, uint8_t *v)
tdr 67 source4/lib/tdr/tdr.c TDR_PULL_NEED_BYTES(tdr, 1);
tdr 68 source4/lib/tdr/tdr.c *v = TDR_CVAL(tdr, tdr->offset);
tdr 69 source4/lib/tdr/tdr.c tdr->offset += 1;
tdr 73 source4/lib/tdr/tdr.c NTSTATUS tdr_push_uint8(struct tdr_push *tdr, const uint8_t *v)
tdr 75 source4/lib/tdr/tdr.c TDR_PUSH_NEED_BYTES(tdr, 1);
tdr 76 source4/lib/tdr/tdr.c TDR_SCVAL(tdr, tdr->data.length, *v);
tdr 77 source4/lib/tdr/tdr.c tdr->data.length += 1;
tdr 81 source4/lib/tdr/tdr.c NTSTATUS tdr_print_uint8(struct tdr_print *tdr, const char *name, uint8_t *v)
tdr 83 source4/lib/tdr/tdr.c tdr->print(tdr, "%-25s: 0x%02x (%u)", name, *v, *v);
tdr 87 source4/lib/tdr/tdr.c NTSTATUS tdr_pull_uint16(struct tdr_pull *tdr, TALLOC_CTX *ctx, uint16_t *v)
tdr 89 source4/lib/tdr/tdr.c TDR_PULL_NEED_BYTES(tdr, 2);
tdr 90 source4/lib/tdr/tdr.c *v = TDR_SVAL(tdr, tdr->offset);
tdr 91 source4/lib/tdr/tdr.c tdr->offset += 2;
tdr 95 source4/lib/tdr/tdr.c NTSTATUS tdr_push_uint16(struct tdr_push *tdr, const uint16_t *v)
tdr 97 source4/lib/tdr/tdr.c TDR_PUSH_NEED_BYTES(tdr, 2);
tdr 98 source4/lib/tdr/tdr.c TDR_SSVAL(tdr, tdr->data.length, *v);
tdr 99 source4/lib/tdr/tdr.c tdr->data.length += 2;
tdr 103 source4/lib/tdr/tdr.c NTSTATUS tdr_print_uint16(struct tdr_print *tdr, const char *name, uint16_t *v)
tdr 105 source4/lib/tdr/tdr.c tdr->print(tdr, "%-25s: 0x%02x (%u)", name, *v, *v);
tdr 109 source4/lib/tdr/tdr.c NTSTATUS tdr_pull_uint32(struct tdr_pull *tdr, TALLOC_CTX *ctx, uint32_t *v)
tdr 111 source4/lib/tdr/tdr.c TDR_PULL_NEED_BYTES(tdr, 4);
tdr 112 source4/lib/tdr/tdr.c *v = TDR_IVAL(tdr, tdr->offset);
tdr 113 source4/lib/tdr/tdr.c tdr->offset += 4;
tdr 117 source4/lib/tdr/tdr.c NTSTATUS tdr_push_uint32(struct tdr_push *tdr, const uint32_t *v)
tdr 119 source4/lib/tdr/tdr.c TDR_PUSH_NEED_BYTES(tdr, 4);
tdr 120 source4/lib/tdr/tdr.c TDR_SIVAL(tdr, tdr->data.length, *v);
tdr 121 source4/lib/tdr/tdr.c tdr->data.length += 4;
tdr 125 source4/lib/tdr/tdr.c NTSTATUS tdr_print_uint32(struct tdr_print *tdr, const char *name, uint32_t *v)
tdr 127 source4/lib/tdr/tdr.c tdr->print(tdr, "%-25s: 0x%02x (%u)", name, *v, *v);
tdr 131 source4/lib/tdr/tdr.c NTSTATUS tdr_pull_charset(struct tdr_pull *tdr, TALLOC_CTX *ctx, const char **v, uint32_t length, uint32_t el_size, charset_t chset)
tdr 138 source4/lib/tdr/tdr.c length = ascii_len_n((const char*)tdr->data.data+tdr->offset, tdr->data.length-tdr->offset);
tdr 141 source4/lib/tdr/tdr.c length = utf16_len_n(tdr->data.data+tdr->offset, tdr->data.length-tdr->offset);
tdr 154 source4/lib/tdr/tdr.c TDR_PULL_NEED_BYTES(tdr, el_size*length);
tdr 156 source4/lib/tdr/tdr.c if (!convert_string_talloc_convenience(ctx, tdr->iconv_convenience, chset, CH_UNIX, tdr->data.data+tdr->offset, el_size*length, discard_const_p(void *, v), &ret, false)) {
tdr 160 source4/lib/tdr/tdr.c tdr->offset += length * el_size;
tdr 165 source4/lib/tdr/tdr.c NTSTATUS tdr_push_charset(struct tdr_push *tdr, const char **v, uint32_t length, uint32_t el_size, charset_t chset)
tdr 174 source4/lib/tdr/tdr.c TDR_PUSH_NEED_BYTES(tdr, required);
tdr 176 source4/lib/tdr/tdr.c if (!convert_string_convenience(tdr->iconv_convenience, CH_UNIX, chset, *v, strlen(*v), tdr->data.data+tdr->data.length, required, &ret, false)) {
tdr 182 source4/lib/tdr/tdr.c memset(tdr->data.data+tdr->data.length+ret, 0, required-ret);
tdr 185 source4/lib/tdr/tdr.c tdr->data.length += required;
tdr 190 source4/lib/tdr/tdr.c NTSTATUS tdr_print_charset(struct tdr_print *tdr, const char *name, const char **v, uint32_t length, uint32_t el_size, charset_t chset)
tdr 192 source4/lib/tdr/tdr.c tdr->print(tdr, "%-25s: %s", name, *v);
tdr 199 source4/lib/tdr/tdr.c NTSTATUS tdr_pull_hyper(struct tdr_pull *tdr, TALLOC_CTX *ctx, uint64_t *v)
tdr 201 source4/lib/tdr/tdr.c TDR_PULL_NEED_BYTES(tdr, 8);
tdr 202 source4/lib/tdr/tdr.c *v = TDR_IVAL(tdr, tdr->offset);
tdr 203 source4/lib/tdr/tdr.c *v |= (uint64_t)(TDR_IVAL(tdr, tdr->offset+4)) << 32;
tdr 204 source4/lib/tdr/tdr.c tdr->offset += 8;
tdr 211 source4/lib/tdr/tdr.c NTSTATUS tdr_push_hyper(struct tdr_push *tdr, uint64_t *v)
tdr 213 source4/lib/tdr/tdr.c TDR_PUSH_NEED_BYTES(tdr, 8);
tdr 214 source4/lib/tdr/tdr.c TDR_SIVAL(tdr, tdr->data.length, ((*v) & 0xFFFFFFFF));
tdr 215 source4/lib/tdr/tdr.c TDR_SIVAL(tdr, tdr->data.length+4, ((*v)>>32));
tdr 216 source4/lib/tdr/tdr.c tdr->data.length += 8;
tdr 223 source4/lib/tdr/tdr.c NTSTATUS tdr_push_NTTIME(struct tdr_push *tdr, NTTIME *t)
tdr 225 source4/lib/tdr/tdr.c TDR_CHECK(tdr_push_hyper(tdr, t));
tdr 232 source4/lib/tdr/tdr.c NTSTATUS tdr_pull_NTTIME(struct tdr_pull *tdr, TALLOC_CTX *ctx, NTTIME *t)
tdr 234 source4/lib/tdr/tdr.c TDR_CHECK(tdr_pull_hyper(tdr, ctx, t));
tdr 241 source4/lib/tdr/tdr.c NTSTATUS tdr_push_time_t(struct tdr_push *tdr, time_t *t)
tdr 243 source4/lib/tdr/tdr.c return tdr_push_uint32(tdr, (uint32_t *)t);
tdr 249 source4/lib/tdr/tdr.c NTSTATUS tdr_pull_time_t(struct tdr_pull *tdr, TALLOC_CTX *ctx, time_t *t)
tdr 252 source4/lib/tdr/tdr.c TDR_CHECK(tdr_pull_uint32(tdr, ctx, &tt));
tdr 257 source4/lib/tdr/tdr.c NTSTATUS tdr_print_time_t(struct tdr_print *tdr, const char *name, time_t *t)
tdr 260 source4/lib/tdr/tdr.c tdr->print(tdr, "%-25s: (time_t)%d", name, (int)*t);
tdr 262 source4/lib/tdr/tdr.c tdr->print(tdr, "%-25s: %s", name, timestring(tdr, *t));
tdr 268 source4/lib/tdr/tdr.c NTSTATUS tdr_print_NTTIME(struct tdr_print *tdr, const char *name, NTTIME *t)
tdr 270 source4/lib/tdr/tdr.c tdr->print(tdr, "%-25s: %s", name, nt_time_string(tdr, *t));
tdr 275 source4/lib/tdr/tdr.c NTSTATUS tdr_print_DATA_BLOB(struct tdr_print *tdr, const char *name, DATA_BLOB *r)
tdr 277 source4/lib/tdr/tdr.c tdr->print(tdr, "%-25s: DATA_BLOB length=%u", name, r->length);
tdr 290 source4/lib/tdr/tdr.c NTSTATUS tdr_push_DATA_BLOB(struct tdr_push *tdr, DATA_BLOB *blob)
tdr 292 source4/lib/tdr/tdr.c if (tdr->flags & TDR_ALIGN2) {
tdr 293 source4/lib/tdr/tdr.c blob->length = TDR_ALIGN(tdr->data.length, 2);
tdr 294 source4/lib/tdr/tdr.c } else if (tdr->flags & TDR_ALIGN4) {
tdr 295 source4/lib/tdr/tdr.c blob->length = TDR_ALIGN(tdr->data.length, 4);
tdr 296 source4/lib/tdr/tdr.c } else if (tdr->flags & TDR_ALIGN8) {
tdr 297 source4/lib/tdr/tdr.c blob->length = TDR_ALIGN(tdr->data.length, 8);
tdr 300 source4/lib/tdr/tdr.c TDR_PUSH_NEED_BYTES(tdr, blob->length);
tdr 302 source4/lib/tdr/tdr.c memcpy(tdr->data.data+tdr->data.length, blob->data, blob->length);
tdr 309 source4/lib/tdr/tdr.c NTSTATUS tdr_pull_DATA_BLOB(struct tdr_pull *tdr, TALLOC_CTX *ctx, DATA_BLOB *blob)
tdr 313 source4/lib/tdr/tdr.c if (tdr->flags & TDR_ALIGN2) {
tdr 314 source4/lib/tdr/tdr.c length = TDR_ALIGN(tdr->offset, 2);
tdr 315 source4/lib/tdr/tdr.c } else if (tdr->flags & TDR_ALIGN4) {
tdr 316 source4/lib/tdr/tdr.c length = TDR_ALIGN(tdr->offset, 4);
tdr 317 source4/lib/tdr/tdr.c } else if (tdr->flags & TDR_ALIGN8) {
tdr 318 source4/lib/tdr/tdr.c length = TDR_ALIGN(tdr->offset, 8);
tdr 319 source4/lib/tdr/tdr.c } else if (tdr->flags & TDR_REMAINING) {
tdr 320 source4/lib/tdr/tdr.c length = tdr->data.length - tdr->offset;
tdr 325 source4/lib/tdr/tdr.c if (tdr->data.length - tdr->offset < length) {
tdr 326 source4/lib/tdr/tdr.c length = tdr->data.length - tdr->offset;
tdr 329 source4/lib/tdr/tdr.c TDR_PULL_NEED_BYTES(tdr, length);
tdr 331 source4/lib/tdr/tdr.c *blob = data_blob_talloc(tdr, tdr->data.data+tdr->offset, length);
tdr 332 source4/lib/tdr/tdr.c tdr->offset += length;
tdr 383 source4/lib/tdr/tdr.c void tdr_print_debug_helper(struct tdr_print *tdr, const char *format, ...) _PRINTF_ATTRIBUTE(2,3)
tdr 393 source4/lib/tdr/tdr.c for (i=0;i<tdr->level;i++) { DEBUG(0,(" ")); }
tdr 29 source4/lib/tdr/testsuite.c struct tdr_push *tdr = tdr_push_init(tctx, lp_iconv_convenience(tctx->lp_ctx));
tdr 31 source4/lib/tdr/testsuite.c torture_assert_ntstatus_ok(tctx, tdr_push_uint8(tdr, &v), "push failed");
tdr 32 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, tdr->data.length, 1, "length incorrect");
tdr 33 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, tdr->data.data[0], 4, "data incorrect");
tdr 41 source4/lib/tdr/testsuite.c struct tdr_pull *tdr = tdr_pull_init(tctx, lp_iconv_convenience(tctx->lp_ctx));
tdr 42 source4/lib/tdr/testsuite.c tdr->data.data = &d;
tdr 43 source4/lib/tdr/testsuite.c tdr->data.length = 1;
tdr 44 source4/lib/tdr/testsuite.c tdr->offset = 0;
tdr 45 source4/lib/tdr/testsuite.c tdr->flags = 0;
tdr 46 source4/lib/tdr/testsuite.c torture_assert_ntstatus_ok(tctx, tdr_pull_uint8(tdr, tctx, &l),
tdr 48 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, 1, tdr->offset,
tdr 56 source4/lib/tdr/testsuite.c struct tdr_push *tdr = tdr_push_init(tctx, lp_iconv_convenience(tctx->lp_ctx));
tdr 58 source4/lib/tdr/testsuite.c torture_assert_ntstatus_ok(tctx, tdr_push_uint16(tdr, &v), "push failed");
tdr 59 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, tdr->data.length, 2, "length incorrect");
tdr 60 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, tdr->data.data[0], 0x32, "data incorrect");
tdr 61 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, tdr->data.data[1], 0x0F, "data incorrect");
tdr 69 source4/lib/tdr/testsuite.c struct tdr_pull *tdr = tdr_pull_init(tctx, lp_iconv_convenience(tctx->lp_ctx));
tdr 70 source4/lib/tdr/testsuite.c tdr->data.data = d;
tdr 71 source4/lib/tdr/testsuite.c tdr->data.length = 2;
tdr 72 source4/lib/tdr/testsuite.c tdr->offset = 0;
tdr 73 source4/lib/tdr/testsuite.c tdr->flags = 0;
tdr 74 source4/lib/tdr/testsuite.c torture_assert_ntstatus_ok(tctx, tdr_pull_uint16(tdr, tctx, &l),
tdr 76 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, 2, tdr->offset, "offset invalid");
tdr 84 source4/lib/tdr/testsuite.c struct tdr_push *tdr = tdr_push_init(tctx, lp_iconv_convenience(tctx->lp_ctx));
tdr 86 source4/lib/tdr/testsuite.c torture_assert_ntstatus_ok(tctx, tdr_push_uint32(tdr, &v), "push failed");
tdr 87 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, tdr->data.length, 4, "length incorrect");
tdr 88 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, tdr->data.data[0], 0x32, "data incorrect");
tdr 89 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, tdr->data.data[1], 0x0F, "data incorrect");
tdr 90 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, tdr->data.data[2], 0x10, "data incorrect");
tdr 91 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, tdr->data.data[3], 0x00, "data incorrect");
tdr 99 source4/lib/tdr/testsuite.c struct tdr_pull *tdr = tdr_pull_init(tctx, lp_iconv_convenience(tctx->lp_ctx));
tdr 100 source4/lib/tdr/testsuite.c tdr->data.data = d;
tdr 101 source4/lib/tdr/testsuite.c tdr->data.length = 4;
tdr 102 source4/lib/tdr/testsuite.c tdr->offset = 0;
tdr 103 source4/lib/tdr/testsuite.c tdr->flags = 0;
tdr 104 source4/lib/tdr/testsuite.c torture_assert_ntstatus_ok(tctx, tdr_pull_uint32(tdr, tctx, &l),
tdr 106 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, 4, tdr->offset, "offset invalid");
tdr 113 source4/lib/tdr/testsuite.c struct tdr_pull *tdr = tdr_pull_init(tctx, lp_iconv_convenience(tctx->lp_ctx));
tdr 115 source4/lib/tdr/testsuite.c tdr->data.data = (uint8_t *)talloc_strdup(tctx, "bla");
tdr 116 source4/lib/tdr/testsuite.c tdr->data.length = 4;
tdr 117 source4/lib/tdr/testsuite.c tdr->offset = 0;
tdr 118 source4/lib/tdr/testsuite.c tdr->flags = 0;
tdr 119 source4/lib/tdr/testsuite.c torture_assert_ntstatus_ok(tctx, tdr_pull_charset(tdr, tctx, &l, -1, 1, CH_DOS),
tdr 121 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, 4, tdr->offset, "offset invalid");
tdr 124 source4/lib/tdr/testsuite.c tdr->offset = 0;
tdr 125 source4/lib/tdr/testsuite.c torture_assert_ntstatus_ok(tctx, tdr_pull_charset(tdr, tctx, &l, 2, 1, CH_UNIX),
tdr 127 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, 2, tdr->offset, "offset invalid");
tdr 135 source4/lib/tdr/testsuite.c struct tdr_pull *tdr = tdr_pull_init(tctx, lp_iconv_convenience(tctx->lp_ctx));
tdr 137 source4/lib/tdr/testsuite.c tdr->data.data = (uint8_t *)talloc_strdup(tctx, "bla");
tdr 138 source4/lib/tdr/testsuite.c tdr->data.length = 4;
tdr 139 source4/lib/tdr/testsuite.c tdr->offset = 0;
tdr 140 source4/lib/tdr/testsuite.c tdr->flags = 0;
tdr 141 source4/lib/tdr/testsuite.c torture_assert_ntstatus_ok(tctx, tdr_pull_charset(tdr, tctx, &l, 0, 1, CH_DOS),
tdr 143 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, 0, tdr->offset, "offset invalid");
tdr 154 source4/lib/tdr/testsuite.c struct tdr_push *tdr = tdr_push_init(tctx, lp_iconv_convenience(tctx->lp_ctx));
tdr 155 source4/lib/tdr/testsuite.c torture_assert_ntstatus_ok(tctx, tdr_push_charset(tdr, &l, 4, 1, CH_UTF8),
tdr 157 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, 4, tdr->data.length, "offset invalid");
tdr 158 source4/lib/tdr/testsuite.c torture_assert(tctx, strcmp("bloe", (const char *)tdr->data.data) == 0, "right string push");
tdr 160 source4/lib/tdr/testsuite.c torture_assert_ntstatus_ok(tctx, tdr_push_charset(tdr, &l, -1, 1, CH_UTF8),
tdr 162 source4/lib/tdr/testsuite.c torture_assert_int_equal(tctx, 9, tdr->data.length, "offset invalid");
tdr 163 source4/lib/tdr/testsuite.c torture_assert_str_equal(tctx, "bloe", (const char *)tdr->data.data+4, "right string read");