diff options
Diffstat (limited to 'source3/include')
-rw-r--r-- | source3/include/client.h | 2 | ||||
-rw-r--r-- | source3/include/ntdomain.h | 26 | ||||
-rw-r--r-- | source3/include/proto.h | 11 | ||||
-rw-r--r-- | source3/include/rpc_misc.h | 10 | ||||
-rw-r--r-- | source3/include/talloc.h | 3 |
5 files changed, 32 insertions, 20 deletions
diff --git a/source3/include/client.h b/source3/include/client.h index 625277d856..748c7375e1 100644 --- a/source3/include/client.h +++ b/source3/include/client.h @@ -107,6 +107,8 @@ struct cli_state { int win95; uint32 capabilities; + TALLOC_CTX *mem_ctx; + /* * Only used in NT domain calls. */ diff --git a/source3/include/ntdomain.h b/source3/include/ntdomain.h index fe6704c2ad..7a47f6150e 100644 --- a/source3/include/ntdomain.h +++ b/source3/include/ntdomain.h @@ -33,6 +33,8 @@ #include "rpc_creds.h" +#include "talloc.h" + /* * A bunch of stuff that was put into smb.h * in the NTDOM branch - it didn't belong there. @@ -64,6 +66,7 @@ typedef struct _prs_struct uint32 buffer_size; /* Current allocated size of the buffer. */ uint32 grow_size; /* size requested via prs_grow() calls */ char *data_p; /* The buffer itself. */ + TALLOC_CTX *mem_ctx; /* When unmarshalling, use this.... */ } prs_struct; /* @@ -131,17 +134,17 @@ typedef struct _input_data { struct msrpc_state { - fstring pipe_name; - struct user_creds usr; - struct ntdom_info nt; + fstring pipe_name; + struct user_creds usr; + struct ntdom_info nt; - int fd; - BOOL redirect; - BOOL initialised; - char *inbuf; - char *outbuf; + int fd; + BOOL redirect; + BOOL initialised; + char *inbuf; + char *outbuf; - uint32 pid; + uint32 pid; }; typedef struct pipes_struct @@ -208,9 +211,8 @@ typedef struct pipes_struct data that can be sent in the initial reply. */ int max_trans_reply; - /* remote, server-side rpc redirection */ - struct msrpc_state *m; - + /* talloc context to use when allocating memory on this pipe. */ + TALLOC_CTX *mem_ctx; } pipes_struct; struct api_struct diff --git a/source3/include/proto.h b/source3/include/proto.h index 9ea50db15e..b6fce9edaa 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -271,6 +271,7 @@ int sys_pclose(int fd); TALLOC_CTX *talloc_init(void); void *talloc(TALLOC_CTX *t, size_t size); +void talloc_destroy_pool(TALLOC_CTX *t); void talloc_destroy(TALLOC_CTX *t); /*The following definitions come from lib/time.c */ @@ -1663,6 +1664,7 @@ BOOL parse_lpq_entry(int snum,char *line, /*The following definitions come from printing/nt_printing.c */ +#if OLD_NTDOMAIN BOOL nt_printing_init(void); int get_ntforms(nt_forms_struct **list); int write_ntforms(nt_forms_struct **list, int number); @@ -1694,6 +1696,7 @@ uint32 nt_printing_setsec(char *printername, SEC_DESC_BUF *secdesc_ctr); BOOL nt_printing_getsec(char *printername, SEC_DESC_BUF **secdesc_ctr); BOOL print_access_check(struct current_user *user, int snum, uint32 required_access); +#endif /*The following definitions come from printing/pcap.c */ @@ -2146,6 +2149,7 @@ BOOL lsa_io_r_close(char *desc, LSA_R_CLOSE *r_c, prs_struct *ps, int depth); /*The following definitions come from rpc_parse/parse_misc.c */ +void parse_talloc_free(void); BOOL smb_io_time(char *desc, NTTIME *nttime, prs_struct *ps, int depth); BOOL smb_io_lookup_level(char *desc, LOOKUP_LEVEL *level, prs_struct *ps, int depth); uint32 get_enum_hnd(ENUM_HND *enh); @@ -2174,7 +2178,6 @@ void init_buffer3_hex(BUFFER3 *str, char *buf); void init_buffer3_bytes(BUFFER3 *str, uint8 *buf, int len); BOOL smb_io_buffer3(char *desc, BUFFER3 *buf3, prs_struct *ps, int depth); BOOL smb_io_buffer5(char *desc, BUFFER5 *buf5, prs_struct *ps, int depth); -void free_buffer5(BUFFER5 *buf5); void init_buffer2(BUFFER2 *str, uint8 *buf, int len); BOOL smb_io_buffer2(char *desc, BUFFER2 *buf2, uint32 buffer, prs_struct *ps, int depth); void init_buf_unistr2(UNISTR2 *str, uint32 *ptr, const char *buf); @@ -2294,9 +2297,11 @@ BOOL net_io_r_sam_logoff(char *desc, NET_R_SAM_LOGOFF *r_l, prs_struct *ps, int void prs_dump(char *name, int v, prs_struct *ps); void prs_debug(prs_struct *ps, int depth, char *desc, char *fn_name); -BOOL prs_init(prs_struct *ps, uint32 size, uint8 align, BOOL io); +BOOL prs_init(prs_struct *ps, uint32 size, uint8 align, TALLOC_CTX *ctx, BOOL io); BOOL prs_read(prs_struct *ps, int fd, size_t len, int timeout); void prs_mem_free(prs_struct *ps); +char *prs_alloc_mem(prs_struct *ps, size_t size); +TALLOC_CTX *prs_get_mem_context(prs_struct *ps); void prs_give_memory(prs_struct *ps, char *buf, uint32 size, BOOL is_dynamic); char *prs_take_memory(prs_struct *ps, uint32 *psize); BOOL prs_set_buffer_size(prs_struct *ps, uint32 newsize); @@ -2333,7 +2338,7 @@ BOOL prs_uint32_pre(char *name, prs_struct *ps, int depth, uint32 *data32, uint3 BOOL prs_uint32_post(char *name, prs_struct *ps, int depth, uint32 *data32, uint32 ptr_uint32, uint32 data_size); int tdb_prs_store(TDB_CONTEXT *tdb, char *keystr, prs_struct *ps); -int tdb_prs_fetch(TDB_CONTEXT *tdb, char *keystr, prs_struct *ps); +int tdb_prs_fetch(TDB_CONTEXT *tdb, char *keystr, prs_struct *ps, TALLOC_CTX *mem_ctx); /*The following definitions come from rpc_parse/parse_reg.c */ diff --git a/source3/include/rpc_misc.h b/source3/include/rpc_misc.h index 5ef4044cb4..6e585e7a0e 100644 --- a/source3/include/rpc_misc.h +++ b/source3/include/rpc_misc.h @@ -125,7 +125,7 @@ typedef struct unihdr2_info typedef struct unistr_info { /* unicode characters. ***MUST*** be little-endian. ***MUST*** be null-terminated */ - uint16 buffer[MAX_UNISTRLEN]; + uint16 *buffer; } UNISTR; /* BUFHDR - buffer header */ @@ -145,7 +145,7 @@ typedef struct buffer2_info uint32 undoc; uint32 buf_len; /* unicode characters. ***MUST*** be little-endian. **NOT** necessarily null-terminated */ - uint16 buffer[MAX_UNISTRLEN]; + uint16 *buffer; } BUFFER2; @@ -153,7 +153,7 @@ typedef struct buffer2_info typedef struct buffer3_info { uint32 buf_max_len; - uint8 buffer[MAX_BUFFERLEN]; /* data */ + uint8 *buffer; /* Data */ uint32 buf_len; } BUFFER3; @@ -172,7 +172,7 @@ typedef struct unistr2_info uint32 undoc; uint32 uni_str_len; /* unicode characters. ***MUST*** be little-endian. **NOT** necessarily null-terminated */ - uint16 buffer[MAX_UNISTRLEN]; + uint16 *buffer; } UNISTR2; @@ -182,7 +182,7 @@ typedef struct string2_info uint32 str_max_len; uint32 undoc; uint32 str_str_len; - uint8 buffer[MAX_STRINGLEN]; /* uint8 characters. **NOT** necessarily null-terminated */ + uint8 *buffer; /* uint8 characters. **NOT** necessarily null-terminated */ } STRING2; diff --git a/source3/include/talloc.h b/source3/include/talloc.h index df68166a5e..a0dc3d9795 100644 --- a/source3/include/talloc.h +++ b/source3/include/talloc.h @@ -1,3 +1,5 @@ +#ifndef _TALLOC_H_ +#define _TALLOC_H_ /* Unix SMB/Netbios implementation. Version 3.0 @@ -30,3 +32,4 @@ typedef struct { struct talloc_chunk *list; } TALLOC_CTX; +#endif |