#define MAX_PROTSEQ 10
-struct dcerpc_binding_pointers;
-
struct dcerpc_binding {
enum dcerpc_transport_t transport;
struct GUID object;
uint32_t flags;
uint32_t assoc_group_id;
char assoc_group_string[11]; /* 0x3456789a + '\0' */
- size_t num_pointers;
- struct dcerpc_binding_pointers *pointers;
-};
-
-struct dcerpc_binding_pointers {
- const char *name;
- const char *
- void *ptr;
};
static const struct {
const char *name, const char *type)
{
char tsbuf[256];
- char vsbuf[20];
const char *vs;
char *end = NULL;
unsigned long long vl;
return NULL;
}
- if (strlen(vs) > (sizeof(vsbuf) - 1)) {
- return NULL;
- }
-
- snprintf(vsbuf, sizeof(vsbuf), "%s", vs);
- vs = vsbuf;
-
- p = strchr(vs, ':');
- if (p == NULL) {
- return NULL;
- }
- *p = '\0';
-
errno = 0;
vl = strtoull(vs, &end, 16);
if (errno != 0) {
return (void *)vp;
}
-struct dcerpc_binding_pointer_option_ref {
- char tsbuf[256];
- char vsbuf[40];
-};
-
_PUBLIC_ NTSTATUS _dcerpc_binding_set_pointer_option(struct dcerpc_binding *b,
const char *name,
const char *type,
const void *vp)
{
char tsbuf[256];
+ char vsbuf[20];
const char *vs = NULL;
- struct dcerpc_binding_pointer_option_ref *r;
- NTSTATUS status;
if (strlen(name) > 100) {
return NT_STATUS_INVALID_PARAMETER_MIX;
snprintf(tsbuf, sizeof(tsbuf), "%s:pointer:%d:%s", name, getpid(), type);
if (vp != NULL) {
- r = talloc_zero(vp, struct dcerpc_binding_pointer_option_ref);
- if (r == NULL) {
- return NT_STATUS_NO_MEMORY;
- }
- snprintf(tsbuf, sizeof(tsbuf), "%s:pointer:%d:%s", name, getpid(), type);
- snprintf(r->vsbuf, sizeof(vsbuf), "%p", vp);
+ snprintf(vsbuf, sizeof(vsbuf), "%p", vp);
vs = vsbuf;
-
-
}
return dcerpc_binding_set_string_option(b, tsbuf, vs);
const char *type,
const void *vp);
#define dcerpc_binding_set_pointer_option(b, name, type, vp) \
- _dcerpc_binding_set_pointer_option(b, name, #type, talloc_get_type(vp, type))
+ _dcerpc_binding_set_pointer_option(b, name, #type, vp)
uint32_t dcerpc_binding_get_flags(const struct dcerpc_binding *b);
NTSTATUS dcerpc_binding_set_flags(struct dcerpc_binding *b,
uint32_t additional,