mirror of
https://github.com/samba-team/samba.git
synced 2025-09-09 01:44:21 +03:00
r3463: separated out some more headers (asn_1.h, messages.h, dlinklist.h and ioctl.h)
(This used to be commit b97e395c81
)
This commit is contained in:
committed by
Gerald (Jerry) Carter
parent
a1d0b97ed4
commit
3643fb1109
@@ -19,6 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
#include "auth/auth.h"
|
#include "auth/auth.h"
|
||||||
|
|
||||||
#undef DBGC_CLASS
|
#undef DBGC_CLASS
|
||||||
|
@@ -27,6 +27,7 @@
|
|||||||
#include "libcli/raw/libcliraw.h"
|
#include "libcli/raw/libcliraw.h"
|
||||||
#include "system/time.h"
|
#include "system/time.h"
|
||||||
#include "system/dir.h"
|
#include "system/dir.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
#ifndef REGISTER
|
#ifndef REGISTER
|
||||||
#define REGISTER 0
|
#define REGISTER 0
|
||||||
|
@@ -27,13 +27,13 @@ struct nesting {
|
|||||||
struct nesting *next;
|
struct nesting *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct asn1_data {
|
struct asn1_data {
|
||||||
uint8_t *data;
|
uint8_t *data;
|
||||||
size_t length;
|
size_t length;
|
||||||
off_t ofs;
|
off_t ofs;
|
||||||
struct nesting *nesting;
|
struct nesting *nesting;
|
||||||
BOOL has_error;
|
BOOL has_error;
|
||||||
} ASN1_DATA;
|
};
|
||||||
|
|
||||||
#define ASN1_APPLICATION(x) ((x)+0x60)
|
#define ASN1_APPLICATION(x) ((x)+0x60)
|
||||||
#define ASN1_APPLICATION_SIMPLE(x) ((x)+0x40)
|
#define ASN1_APPLICATION_SIMPLE(x) ((x)+0x40)
|
||||||
|
@@ -109,18 +109,6 @@
|
|||||||
#define VOLATILE
|
#define VOLATILE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
* Define additional missing types
|
|
||||||
*/
|
|
||||||
#ifndef HAVE_SIG_ATOMIC_T_TYPE
|
|
||||||
typedef int sig_atomic_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef HAVE_SOCKLEN_T_TYPE
|
|
||||||
typedef int socklen_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Samba needs type definitions for
|
Samba needs type definitions for
|
||||||
int8_t, int16_t, int32_t, int64_t
|
int8_t, int16_t, int32_t, int64_t
|
||||||
@@ -194,7 +182,6 @@ extern int errno;
|
|||||||
|
|
||||||
/* Lists, trees, caching, database... */
|
/* Lists, trees, caching, database... */
|
||||||
#include "xfile.h"
|
#include "xfile.h"
|
||||||
#include "dlinklist.h"
|
|
||||||
#include "talloc.h"
|
#include "talloc.h"
|
||||||
#include "lib/ldb/include/ldb.h"
|
#include "lib/ldb/include/ldb.h"
|
||||||
#include "lib/tdb/include/tdb.h"
|
#include "lib/tdb/include/tdb.h"
|
||||||
@@ -203,9 +190,7 @@ extern int errno;
|
|||||||
#include "db_wrap.h"
|
#include "db_wrap.h"
|
||||||
#include "nt_status.h"
|
#include "nt_status.h"
|
||||||
#include "trans2.h"
|
#include "trans2.h"
|
||||||
#include "ioctl.h"
|
|
||||||
#include "nterr.h"
|
#include "nterr.h"
|
||||||
#include "messages.h"
|
|
||||||
#include "charset.h"
|
#include "charset.h"
|
||||||
#include "dynconfig.h"
|
#include "dynconfig.h"
|
||||||
|
|
||||||
@@ -221,8 +206,6 @@ extern int errno;
|
|||||||
|
|
||||||
#include "module.h"
|
#include "module.h"
|
||||||
|
|
||||||
#include "asn_1.h"
|
|
||||||
|
|
||||||
#include "mutex.h"
|
#include "mutex.h"
|
||||||
|
|
||||||
#include "structs.h"
|
#include "structs.h"
|
||||||
|
@@ -65,3 +65,6 @@ struct spnego_data;
|
|||||||
struct gensec_security;
|
struct gensec_security;
|
||||||
typedef NTSTATUS (*gensec_password_callback)(struct gensec_security *gensec_security, TALLOC_CTX *mem_ctx,
|
typedef NTSTATUS (*gensec_password_callback)(struct gensec_security *gensec_security, TALLOC_CTX *mem_ctx,
|
||||||
char **password);
|
char **password);
|
||||||
|
|
||||||
|
struct asn1_data;
|
||||||
|
|
||||||
|
@@ -24,3 +24,4 @@
|
|||||||
#include <glob.h>
|
#include <glob.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <fnmatch.h>
|
||||||
|
@@ -78,3 +78,6 @@
|
|||||||
#define MAXHOSTNAMELEN 254
|
#define MAXHOSTNAMELEN 254
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_SOCKLEN_T_TYPE
|
||||||
|
typedef int socklen_t;
|
||||||
|
#endif
|
||||||
|
@@ -23,3 +23,11 @@
|
|||||||
#ifdef HAVE_SYS_WAIT_H
|
#ifdef HAVE_SYS_WAIT_H
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define additional missing types
|
||||||
|
*/
|
||||||
|
#ifndef HAVE_SIG_ATOMIC_T_TYPE
|
||||||
|
typedef int sig_atomic_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
|
|
||||||
struct ldapsrv_reply *ldapsrv_init_reply(struct ldapsrv_call *call, enum ldap_request_tag type)
|
struct ldapsrv_reply *ldapsrv_init_reply(struct ldapsrv_call *call, enum ldap_request_tag type)
|
||||||
|
@@ -21,6 +21,8 @@
|
|||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "auth/auth.h"
|
#include "auth/auth.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
#include "asn_1.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
close the socket and shutdown a server_context
|
close the socket and shutdown a server_context
|
||||||
@@ -443,7 +445,7 @@ static void ldapsrv_recv(struct server_connection *conn, time_t t,
|
|||||||
uint8_t *buf;
|
uint8_t *buf;
|
||||||
int buf_length, msg_length;
|
int buf_length, msg_length;
|
||||||
DATA_BLOB blob;
|
DATA_BLOB blob;
|
||||||
ASN1_DATA data;
|
struct asn1_data data;
|
||||||
struct ldapsrv_call *call;
|
struct ldapsrv_call *call;
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
|
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
static struct ldb_wrap *ldb_list;
|
static struct ldb_wrap *ldb_list;
|
||||||
static struct tdb_wrap *tdb_list;
|
static struct tdb_wrap *tdb_list;
|
||||||
|
@@ -67,6 +67,7 @@
|
|||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "system/time.h"
|
#include "system/time.h"
|
||||||
#include "system/select.h"
|
#include "system/select.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
create a event_context structure. This must be the first events
|
create a event_context structure. This must be the first events
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
#include "system/iconv.h"
|
#include "system/iconv.h"
|
||||||
|
|
||||||
|
|
||||||
|
@@ -22,6 +22,8 @@
|
|||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "system/time.h"
|
#include "system/time.h"
|
||||||
|
#include "messages.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
/* change the message version with any incompatible changes in the protocol */
|
/* change the message version with any incompatible changes in the protocol */
|
||||||
#define MESSAGING_VERSION 1
|
#define MESSAGING_VERSION 1
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "system/dir.h"
|
#include "system/dir.h"
|
||||||
#include "system/filesys.h"
|
#include "system/filesys.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
#ifdef HAVE_DLOPEN
|
#ifdef HAVE_DLOPEN
|
||||||
|
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "system/network.h"
|
#include "system/network.h"
|
||||||
#include "lib/netif/netif.h"
|
#include "lib/netif/netif.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
static struct iface_struct *probed_ifaces;
|
static struct iface_struct *probed_ifaces;
|
||||||
static int total_probed;
|
static int total_probed;
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
#undef DBGC_CLASS
|
#undef DBGC_CLASS
|
||||||
#define DBGC_CLASS DBGC_REGISTRY
|
#define DBGC_CLASS DBGC_REGISTRY
|
||||||
|
@@ -19,7 +19,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include <fnmatch.h>
|
#include "system/glob.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
/* these are little tdb utility functions that are meant to make
|
/* these are little tdb utility functions that are meant to make
|
||||||
dealing with a tdb database a little less cumbersome in Samba */
|
dealing with a tdb database a little less cumbersome in Samba */
|
||||||
|
@@ -49,8 +49,7 @@ static DATA_BLOB encode_krb5_setpw(const char *principal, const char *password)
|
|||||||
char* realm = NULL;
|
char* realm = NULL;
|
||||||
char* c;
|
char* c;
|
||||||
char* princ;
|
char* princ;
|
||||||
|
struct asn1_data req;
|
||||||
ASN1_DATA req;
|
|
||||||
DATA_BLOB ret;
|
DATA_BLOB ret;
|
||||||
|
|
||||||
|
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
#include "libcli/auth/kerberos.h"
|
#include "libcli/auth/kerberos.h"
|
||||||
#include "librpc/gen_ndr/ndr_krb5pac.h"
|
#include "librpc/gen_ndr/ndr_krb5pac.h"
|
||||||
#include "auth/auth.h"
|
#include "auth/auth.h"
|
||||||
|
#include "asn_1.h"
|
||||||
|
|
||||||
#undef DBGC_CLASS
|
#undef DBGC_CLASS
|
||||||
#define DBGC_CLASS DBGC_AUTH
|
#define DBGC_CLASS DBGC_AUTH
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "auth/auth.h"
|
#include "auth/auth.h"
|
||||||
|
#include "asn_1.h"
|
||||||
|
|
||||||
struct gensec_ntlmssp_state {
|
struct gensec_ntlmssp_state {
|
||||||
struct auth_context *auth_context;
|
struct auth_context *auth_context;
|
||||||
|
@@ -23,13 +23,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "asn_1.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
generate a krb5 GSS-API wrapper packet given a ticket
|
generate a krb5 GSS-API wrapper packet given a ticket
|
||||||
*/
|
*/
|
||||||
DATA_BLOB gensec_gssapi_gen_krb5_wrap(TALLOC_CTX *mem_ctx, const DATA_BLOB *ticket, const uint8 tok_id[2])
|
DATA_BLOB gensec_gssapi_gen_krb5_wrap(TALLOC_CTX *mem_ctx, const DATA_BLOB *ticket, const uint8 tok_id[2])
|
||||||
{
|
{
|
||||||
ASN1_DATA data;
|
struct asn1_data data;
|
||||||
DATA_BLOB ret;
|
DATA_BLOB ret;
|
||||||
|
|
||||||
ZERO_STRUCT(data);
|
ZERO_STRUCT(data);
|
||||||
@@ -58,7 +59,7 @@ DATA_BLOB gensec_gssapi_gen_krb5_wrap(TALLOC_CTX *mem_ctx, const DATA_BLOB *tick
|
|||||||
BOOL gensec_gssapi_parse_krb5_wrap(TALLOC_CTX *mem_ctx, const DATA_BLOB *blob, DATA_BLOB *ticket, uint8 tok_id[2])
|
BOOL gensec_gssapi_parse_krb5_wrap(TALLOC_CTX *mem_ctx, const DATA_BLOB *blob, DATA_BLOB *ticket, uint8 tok_id[2])
|
||||||
{
|
{
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
ASN1_DATA data;
|
struct asn1_data data;
|
||||||
int data_remaining;
|
int data_remaining;
|
||||||
|
|
||||||
asn1_load(&data, *blob);
|
asn1_load(&data, *blob);
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "system/kerberos.h"
|
#include "system/kerberos.h"
|
||||||
#include "libcli/auth/kerberos.h"
|
#include "libcli/auth/kerberos.h"
|
||||||
|
#include "asn_1.h"
|
||||||
|
|
||||||
#ifdef HAVE_KRB5
|
#ifdef HAVE_KRB5
|
||||||
|
|
||||||
@@ -32,7 +33,7 @@ static DATA_BLOB unwrap_pac(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data)
|
|||||||
{
|
{
|
||||||
DATA_BLOB out;
|
DATA_BLOB out;
|
||||||
DATA_BLOB pac_contents = data_blob(NULL, 0);
|
DATA_BLOB pac_contents = data_blob(NULL, 0);
|
||||||
ASN1_DATA data;
|
struct asn1_data data;
|
||||||
int data_type;
|
int data_type;
|
||||||
if (!auth_data->length) {
|
if (!auth_data->length) {
|
||||||
return data_blob(NULL, 0);
|
return data_blob(NULL, 0);
|
||||||
|
@@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "auth/auth.h"
|
#include "auth/auth.h"
|
||||||
|
#include "asn_1.h"
|
||||||
|
|
||||||
#undef DBGC_CLASS
|
#undef DBGC_CLASS
|
||||||
#define DBGC_CLASS DBGC_AUTH
|
#define DBGC_CLASS DBGC_AUTH
|
||||||
|
@@ -23,11 +23,12 @@
|
|||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "auth/auth.h"
|
#include "auth/auth.h"
|
||||||
|
#include "asn_1.h"
|
||||||
|
|
||||||
#undef DBGC_CLASS
|
#undef DBGC_CLASS
|
||||||
#define DBGC_CLASS DBGC_AUTH
|
#define DBGC_CLASS DBGC_AUTH
|
||||||
|
|
||||||
static BOOL read_negTokenInit(ASN1_DATA *asn1, struct spnego_negTokenInit *token)
|
static BOOL read_negTokenInit(struct asn1_data *asn1, struct spnego_negTokenInit *token)
|
||||||
{
|
{
|
||||||
ZERO_STRUCTP(token);
|
ZERO_STRUCTP(token);
|
||||||
|
|
||||||
@@ -117,7 +118,7 @@ static BOOL read_negTokenInit(ASN1_DATA *asn1, struct spnego_negTokenInit *token
|
|||||||
return !asn1->has_error;
|
return !asn1->has_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL write_negTokenInit(ASN1_DATA *asn1, struct spnego_negTokenInit *token)
|
static BOOL write_negTokenInit(struct asn1_data *asn1, struct spnego_negTokenInit *token)
|
||||||
{
|
{
|
||||||
asn1_push_tag(asn1, ASN1_CONTEXT(0));
|
asn1_push_tag(asn1, ASN1_CONTEXT(0));
|
||||||
asn1_push_tag(asn1, ASN1_SEQUENCE(0));
|
asn1_push_tag(asn1, ASN1_SEQUENCE(0));
|
||||||
@@ -180,7 +181,7 @@ static BOOL write_negTokenInit(ASN1_DATA *asn1, struct spnego_negTokenInit *toke
|
|||||||
return !asn1->has_error;
|
return !asn1->has_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL read_negTokenTarg(ASN1_DATA *asn1, struct spnego_negTokenTarg *token)
|
static BOOL read_negTokenTarg(struct asn1_data *asn1, struct spnego_negTokenTarg *token)
|
||||||
{
|
{
|
||||||
ZERO_STRUCTP(token);
|
ZERO_STRUCTP(token);
|
||||||
|
|
||||||
@@ -229,7 +230,7 @@ static BOOL read_negTokenTarg(ASN1_DATA *asn1, struct spnego_negTokenTarg *token
|
|||||||
return !asn1->has_error;
|
return !asn1->has_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL write_negTokenTarg(ASN1_DATA *asn1, struct spnego_negTokenTarg *token)
|
static BOOL write_negTokenTarg(struct asn1_data *asn1, struct spnego_negTokenTarg *token)
|
||||||
{
|
{
|
||||||
asn1_push_tag(asn1, ASN1_CONTEXT(1));
|
asn1_push_tag(asn1, ASN1_CONTEXT(1));
|
||||||
asn1_push_tag(asn1, ASN1_SEQUENCE(0));
|
asn1_push_tag(asn1, ASN1_SEQUENCE(0));
|
||||||
@@ -268,7 +269,7 @@ static BOOL write_negTokenTarg(ASN1_DATA *asn1, struct spnego_negTokenTarg *toke
|
|||||||
|
|
||||||
ssize_t spnego_read_data(DATA_BLOB data, struct spnego_data *token)
|
ssize_t spnego_read_data(DATA_BLOB data, struct spnego_data *token)
|
||||||
{
|
{
|
||||||
ASN1_DATA asn1;
|
struct asn1_data asn1;
|
||||||
ssize_t ret = -1;
|
ssize_t ret = -1;
|
||||||
uint8_t context;
|
uint8_t context;
|
||||||
|
|
||||||
@@ -312,7 +313,7 @@ ssize_t spnego_read_data(DATA_BLOB data, struct spnego_data *token)
|
|||||||
|
|
||||||
ssize_t spnego_write_data(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, struct spnego_data *spnego)
|
ssize_t spnego_write_data(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, struct spnego_data *spnego)
|
||||||
{
|
{
|
||||||
ASN1_DATA asn1;
|
struct asn1_data asn1;
|
||||||
ssize_t ret = -1;
|
ssize_t ret = -1;
|
||||||
|
|
||||||
ZERO_STRUCT(asn1);
|
ZERO_STRUCT(asn1);
|
||||||
|
@@ -27,6 +27,8 @@
|
|||||||
#include "system/network.h"
|
#include "system/network.h"
|
||||||
#include "system/iconv.h"
|
#include "system/iconv.h"
|
||||||
#include "auth/auth.h"
|
#include "auth/auth.h"
|
||||||
|
#include "asn_1.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
*
|
*
|
||||||
@@ -303,7 +305,7 @@ static struct ldap_parse_tree *ldap_parse_tree(TALLOC_CTX *mem_ctx, const char *
|
|||||||
return ldap_parse_simple(mem_ctx, s);
|
return ldap_parse_simple(mem_ctx, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL ldap_push_filter(ASN1_DATA *data, struct ldap_parse_tree *tree)
|
static BOOL ldap_push_filter(struct asn1_data *data, struct ldap_parse_tree *tree)
|
||||||
{
|
{
|
||||||
switch (tree->operation) {
|
switch (tree->operation) {
|
||||||
case LDAP_OP_SIMPLE: {
|
case LDAP_OP_SIMPLE: {
|
||||||
@@ -354,7 +356,7 @@ static BOOL ldap_push_filter(ASN1_DATA *data, struct ldap_parse_tree *tree)
|
|||||||
return !data->has_error;
|
return !data->has_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ldap_encode_response(ASN1_DATA *data, struct ldap_Result *result)
|
static void ldap_encode_response(struct asn1_data *data, struct ldap_Result *result)
|
||||||
{
|
{
|
||||||
asn1_write_enumerated(data, result->resultcode);
|
asn1_write_enumerated(data, result->resultcode);
|
||||||
asn1_write_OctetString(data, result->dn,
|
asn1_write_OctetString(data, result->dn,
|
||||||
@@ -369,7 +371,7 @@ static void ldap_encode_response(ASN1_DATA *data, struct ldap_Result *result)
|
|||||||
|
|
||||||
BOOL ldap_encode(struct ldap_message *msg, DATA_BLOB *result)
|
BOOL ldap_encode(struct ldap_message *msg, DATA_BLOB *result)
|
||||||
{
|
{
|
||||||
ASN1_DATA data;
|
struct asn1_data data;
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
ZERO_STRUCT(data);
|
ZERO_STRUCT(data);
|
||||||
@@ -663,7 +665,7 @@ static const char *blob2string_talloc(TALLOC_CTX *mem_ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static BOOL asn1_read_OctetString_talloc(TALLOC_CTX *mem_ctx,
|
static BOOL asn1_read_OctetString_talloc(TALLOC_CTX *mem_ctx,
|
||||||
ASN1_DATA *data,
|
struct asn1_data *data,
|
||||||
const char **result)
|
const char **result)
|
||||||
{
|
{
|
||||||
DATA_BLOB string;
|
DATA_BLOB string;
|
||||||
@@ -675,7 +677,7 @@ static BOOL asn1_read_OctetString_talloc(TALLOC_CTX *mem_ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void ldap_decode_response(TALLOC_CTX *mem_ctx,
|
static void ldap_decode_response(TALLOC_CTX *mem_ctx,
|
||||||
ASN1_DATA *data,
|
struct asn1_data *data,
|
||||||
struct ldap_Result *result)
|
struct ldap_Result *result)
|
||||||
{
|
{
|
||||||
asn1_read_enumerated(data, &result->resultcode);
|
asn1_read_enumerated(data, &result->resultcode);
|
||||||
@@ -690,7 +692,7 @@ static void ldap_decode_response(TALLOC_CTX *mem_ctx,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL ldap_decode_filter(TALLOC_CTX *mem_ctx, ASN1_DATA *data,
|
static BOOL ldap_decode_filter(TALLOC_CTX *mem_ctx, struct asn1_data *data,
|
||||||
char **filter)
|
char **filter)
|
||||||
{
|
{
|
||||||
uint8 filter_tag, tag_desc;
|
uint8 filter_tag, tag_desc;
|
||||||
@@ -795,7 +797,7 @@ static BOOL ldap_decode_filter(TALLOC_CTX *mem_ctx, ASN1_DATA *data,
|
|||||||
return True;
|
return True;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ldap_decode_attrib(TALLOC_CTX *mem_ctx, ASN1_DATA *data,
|
static void ldap_decode_attrib(TALLOC_CTX *mem_ctx, struct asn1_data *data,
|
||||||
struct ldap_attribute *attrib)
|
struct ldap_attribute *attrib)
|
||||||
{
|
{
|
||||||
asn1_start_tag(data, ASN1_SEQUENCE(0));
|
asn1_start_tag(data, ASN1_SEQUENCE(0));
|
||||||
@@ -815,7 +817,7 @@ static void ldap_decode_attrib(TALLOC_CTX *mem_ctx, ASN1_DATA *data,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ldap_decode_attribs(TALLOC_CTX *mem_ctx, ASN1_DATA *data,
|
static void ldap_decode_attribs(TALLOC_CTX *mem_ctx, struct asn1_data *data,
|
||||||
struct ldap_attribute **attributes,
|
struct ldap_attribute **attributes,
|
||||||
int *num_attributes)
|
int *num_attributes)
|
||||||
{
|
{
|
||||||
@@ -830,7 +832,7 @@ static void ldap_decode_attribs(TALLOC_CTX *mem_ctx, ASN1_DATA *data,
|
|||||||
asn1_end_tag(data);
|
asn1_end_tag(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL ldap_decode(ASN1_DATA *data, struct ldap_message *msg)
|
BOOL ldap_decode(struct asn1_data *data, struct ldap_message *msg)
|
||||||
{
|
{
|
||||||
uint8 tag;
|
uint8 tag;
|
||||||
|
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "libcli/raw/libcliraw.h"
|
#include "libcli/raw/libcliraw.h"
|
||||||
#include "auth/auth.h"
|
#include "auth/auth.h"
|
||||||
|
#include "asn_1.h"
|
||||||
|
|
||||||
#define SETUP_REQUEST_SESSION(cmd, wct, buflen) do { \
|
#define SETUP_REQUEST_SESSION(cmd, wct, buflen) do { \
|
||||||
req = smbcli_request_setup_session(session, cmd, wct, buflen); \
|
req = smbcli_request_setup_session(session, cmd, wct, buflen); \
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "libcli/raw/libcliraw.h"
|
#include "libcli/raw/libcliraw.h"
|
||||||
#include "system/time.h"
|
#include "system/time.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
|
|
||||||
static void smbcli_transport_process_recv(struct smbcli_transport *transport);
|
static void smbcli_transport_process_recv(struct smbcli_transport *transport);
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "libcli/raw/libcliraw.h"
|
#include "libcli/raw/libcliraw.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
/* we over allocate the data buffer to prevent too many realloc calls */
|
/* we over allocate the data buffer to prevent too many realloc calls */
|
||||||
#define REQ_OVER_ALLOCATION 256
|
#define REQ_OVER_ALLOCATION 256
|
||||||
|
@@ -19,15 +19,16 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "asn_1.h"
|
||||||
|
|
||||||
/* free an asn1 structure */
|
/* free an asn1 structure */
|
||||||
void asn1_free(ASN1_DATA *data)
|
void asn1_free(struct asn1_data *data)
|
||||||
{
|
{
|
||||||
talloc_free(data->data);
|
talloc_free(data->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* write to the ASN1 buffer, advancing the buffer pointer */
|
/* write to the ASN1 buffer, advancing the buffer pointer */
|
||||||
BOOL asn1_write(ASN1_DATA *data, const void *p, int len)
|
BOOL asn1_write(struct asn1_data *data, const void *p, int len)
|
||||||
{
|
{
|
||||||
if (data->has_error) return False;
|
if (data->has_error) return False;
|
||||||
if (data->length < data->ofs+len) {
|
if (data->length < data->ofs+len) {
|
||||||
@@ -47,13 +48,13 @@ BOOL asn1_write(ASN1_DATA *data, const void *p, int len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* useful fn for writing a uint8_t */
|
/* useful fn for writing a uint8_t */
|
||||||
BOOL asn1_write_uint8(ASN1_DATA *data, uint8_t v)
|
BOOL asn1_write_uint8(struct asn1_data *data, uint8_t v)
|
||||||
{
|
{
|
||||||
return asn1_write(data, &v, 1);
|
return asn1_write(data, &v, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* push a tag onto the asn1 data buffer. Used for nested structures */
|
/* push a tag onto the asn1 data buffer. Used for nested structures */
|
||||||
BOOL asn1_push_tag(ASN1_DATA *data, uint8_t tag)
|
BOOL asn1_push_tag(struct asn1_data *data, uint8_t tag)
|
||||||
{
|
{
|
||||||
struct nesting *nesting;
|
struct nesting *nesting;
|
||||||
|
|
||||||
@@ -71,7 +72,7 @@ BOOL asn1_push_tag(ASN1_DATA *data, uint8_t tag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* pop a tag */
|
/* pop a tag */
|
||||||
BOOL asn1_pop_tag(ASN1_DATA *data)
|
BOOL asn1_pop_tag(struct asn1_data *data)
|
||||||
{
|
{
|
||||||
struct nesting *nesting;
|
struct nesting *nesting;
|
||||||
size_t len;
|
size_t len;
|
||||||
@@ -110,7 +111,7 @@ BOOL asn1_pop_tag(ASN1_DATA *data)
|
|||||||
/* "i" is the one's complement representation, as is the normal result of an
|
/* "i" is the one's complement representation, as is the normal result of an
|
||||||
* implicit signed->unsigned conversion */
|
* implicit signed->unsigned conversion */
|
||||||
|
|
||||||
static BOOL push_int_bigendian(ASN1_DATA *data, unsigned int i, BOOL negative)
|
static BOOL push_int_bigendian(struct asn1_data *data, unsigned int i, BOOL negative)
|
||||||
{
|
{
|
||||||
uint8_t lowest = i & 0xFF;
|
uint8_t lowest = i & 0xFF;
|
||||||
|
|
||||||
@@ -153,7 +154,7 @@ static BOOL push_int_bigendian(ASN1_DATA *data, unsigned int i, BOOL negative)
|
|||||||
/* write an Integer without the tag framing. Needed for example for the LDAP
|
/* write an Integer without the tag framing. Needed for example for the LDAP
|
||||||
* Abandon Operation */
|
* Abandon Operation */
|
||||||
|
|
||||||
BOOL asn1_write_implicit_Integer(ASN1_DATA *data, int i)
|
BOOL asn1_write_implicit_Integer(struct asn1_data *data, int i)
|
||||||
{
|
{
|
||||||
if (i == -1) {
|
if (i == -1) {
|
||||||
/* -1 is special as it consists of all-0xff bytes. In
|
/* -1 is special as it consists of all-0xff bytes. In
|
||||||
@@ -168,7 +169,7 @@ BOOL asn1_write_implicit_Integer(ASN1_DATA *data, int i)
|
|||||||
|
|
||||||
|
|
||||||
/* write an integer */
|
/* write an integer */
|
||||||
BOOL asn1_write_Integer(ASN1_DATA *data, int i)
|
BOOL asn1_write_Integer(struct asn1_data *data, int i)
|
||||||
{
|
{
|
||||||
if (!asn1_push_tag(data, ASN1_INTEGER)) return False;
|
if (!asn1_push_tag(data, ASN1_INTEGER)) return False;
|
||||||
if (!asn1_write_implicit_Integer(data, i)) return False;
|
if (!asn1_write_implicit_Integer(data, i)) return False;
|
||||||
@@ -176,7 +177,7 @@ BOOL asn1_write_Integer(ASN1_DATA *data, int i)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* write an object ID to a ASN1 buffer */
|
/* write an object ID to a ASN1 buffer */
|
||||||
BOOL asn1_write_OID(ASN1_DATA *data, const char *OID)
|
BOOL asn1_write_OID(struct asn1_data *data, const char *OID)
|
||||||
{
|
{
|
||||||
uint_t v, v2;
|
uint_t v, v2;
|
||||||
const char *p = (const char *)OID;
|
const char *p = (const char *)OID;
|
||||||
@@ -205,7 +206,7 @@ BOOL asn1_write_OID(ASN1_DATA *data, const char *OID)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* write an octet string */
|
/* write an octet string */
|
||||||
BOOL asn1_write_OctetString(ASN1_DATA *data, const void *p, size_t length)
|
BOOL asn1_write_OctetString(struct asn1_data *data, const void *p, size_t length)
|
||||||
{
|
{
|
||||||
asn1_push_tag(data, ASN1_OCTET_STRING);
|
asn1_push_tag(data, ASN1_OCTET_STRING);
|
||||||
asn1_write(data, p, length);
|
asn1_write(data, p, length);
|
||||||
@@ -214,7 +215,7 @@ BOOL asn1_write_OctetString(ASN1_DATA *data, const void *p, size_t length)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* write a general string */
|
/* write a general string */
|
||||||
BOOL asn1_write_GeneralString(ASN1_DATA *data, const char *s)
|
BOOL asn1_write_GeneralString(struct asn1_data *data, const char *s)
|
||||||
{
|
{
|
||||||
asn1_push_tag(data, ASN1_GENERAL_STRING);
|
asn1_push_tag(data, ASN1_GENERAL_STRING);
|
||||||
asn1_write(data, s, strlen(s));
|
asn1_write(data, s, strlen(s));
|
||||||
@@ -222,7 +223,7 @@ BOOL asn1_write_GeneralString(ASN1_DATA *data, const char *s)
|
|||||||
return !data->has_error;
|
return !data->has_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL asn1_write_ContextSimple(ASN1_DATA *data, uint8_t num, DATA_BLOB *blob)
|
BOOL asn1_write_ContextSimple(struct asn1_data *data, uint8_t num, DATA_BLOB *blob)
|
||||||
{
|
{
|
||||||
asn1_push_tag(data, ASN1_CONTEXT_SIMPLE(num));
|
asn1_push_tag(data, ASN1_CONTEXT_SIMPLE(num));
|
||||||
asn1_write(data, blob->data, blob->length);
|
asn1_write(data, blob->data, blob->length);
|
||||||
@@ -231,7 +232,7 @@ BOOL asn1_write_ContextSimple(ASN1_DATA *data, uint8_t num, DATA_BLOB *blob)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* write a BOOLEAN */
|
/* write a BOOLEAN */
|
||||||
BOOL asn1_write_BOOLEAN(ASN1_DATA *data, BOOL v)
|
BOOL asn1_write_BOOLEAN(struct asn1_data *data, BOOL v)
|
||||||
{
|
{
|
||||||
asn1_push_tag(data, ASN1_BOOLEAN);
|
asn1_push_tag(data, ASN1_BOOLEAN);
|
||||||
asn1_write_uint8(data, v ? 0xFF : 0);
|
asn1_write_uint8(data, v ? 0xFF : 0);
|
||||||
@@ -239,7 +240,7 @@ BOOL asn1_write_BOOLEAN(ASN1_DATA *data, BOOL v)
|
|||||||
return !data->has_error;
|
return !data->has_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL asn1_read_BOOLEAN(ASN1_DATA *data, BOOL *v)
|
BOOL asn1_read_BOOLEAN(struct asn1_data *data, BOOL *v)
|
||||||
{
|
{
|
||||||
uint8_t tmp = 0;
|
uint8_t tmp = 0;
|
||||||
asn1_start_tag(data, ASN1_BOOLEAN);
|
asn1_start_tag(data, ASN1_BOOLEAN);
|
||||||
@@ -254,7 +255,7 @@ BOOL asn1_read_BOOLEAN(ASN1_DATA *data, BOOL *v)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* check a BOOLEAN */
|
/* check a BOOLEAN */
|
||||||
BOOL asn1_check_BOOLEAN(ASN1_DATA *data, BOOL v)
|
BOOL asn1_check_BOOLEAN(struct asn1_data *data, BOOL v)
|
||||||
{
|
{
|
||||||
uint8_t b = 0;
|
uint8_t b = 0;
|
||||||
|
|
||||||
@@ -272,8 +273,8 @@ BOOL asn1_check_BOOLEAN(ASN1_DATA *data, BOOL v)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* load a ASN1_DATA structure with a lump of data, ready to be parsed */
|
/* load a struct asn1_data structure with a lump of data, ready to be parsed */
|
||||||
BOOL asn1_load(ASN1_DATA *data, DATA_BLOB blob)
|
BOOL asn1_load(struct asn1_data *data, DATA_BLOB blob)
|
||||||
{
|
{
|
||||||
ZERO_STRUCTP(data);
|
ZERO_STRUCTP(data);
|
||||||
data->data = talloc_memdup(NULL, blob.data, blob.length);
|
data->data = talloc_memdup(NULL, blob.data, blob.length);
|
||||||
@@ -286,7 +287,7 @@ BOOL asn1_load(ASN1_DATA *data, DATA_BLOB blob)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Peek into an ASN1 buffer, not advancing the pointer */
|
/* Peek into an ASN1 buffer, not advancing the pointer */
|
||||||
BOOL asn1_peek(ASN1_DATA *data, void *p, int len)
|
BOOL asn1_peek(struct asn1_data *data, void *p, int len)
|
||||||
{
|
{
|
||||||
if (len < 0 || data->ofs + len < data->ofs || data->ofs + len < len)
|
if (len < 0 || data->ofs + len < data->ofs || data->ofs + len < len)
|
||||||
return False;
|
return False;
|
||||||
@@ -299,7 +300,7 @@ BOOL asn1_peek(ASN1_DATA *data, void *p, int len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* read from a ASN1 buffer, advancing the buffer pointer */
|
/* read from a ASN1 buffer, advancing the buffer pointer */
|
||||||
BOOL asn1_read(ASN1_DATA *data, void *p, int len)
|
BOOL asn1_read(struct asn1_data *data, void *p, int len)
|
||||||
{
|
{
|
||||||
if (!asn1_peek(data, p, len)) {
|
if (!asn1_peek(data, p, len)) {
|
||||||
data->has_error = True;
|
data->has_error = True;
|
||||||
@@ -311,17 +312,17 @@ BOOL asn1_read(ASN1_DATA *data, void *p, int len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* read a uint8_t from a ASN1 buffer */
|
/* read a uint8_t from a ASN1 buffer */
|
||||||
BOOL asn1_read_uint8(ASN1_DATA *data, uint8_t *v)
|
BOOL asn1_read_uint8(struct asn1_data *data, uint8_t *v)
|
||||||
{
|
{
|
||||||
return asn1_read(data, v, 1);
|
return asn1_read(data, v, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL asn1_peek_uint8(ASN1_DATA *data, uint8_t *v)
|
BOOL asn1_peek_uint8(struct asn1_data *data, uint8_t *v)
|
||||||
{
|
{
|
||||||
return asn1_peek(data, v, 1);
|
return asn1_peek(data, v, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL asn1_peek_tag(ASN1_DATA *data, uint8_t tag)
|
BOOL asn1_peek_tag(struct asn1_data *data, uint8_t tag)
|
||||||
{
|
{
|
||||||
uint8_t b;
|
uint8_t b;
|
||||||
|
|
||||||
@@ -336,7 +337,7 @@ BOOL asn1_peek_tag(ASN1_DATA *data, uint8_t tag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* start reading a nested asn1 structure */
|
/* start reading a nested asn1 structure */
|
||||||
BOOL asn1_start_tag(ASN1_DATA *data, uint8_t tag)
|
BOOL asn1_start_tag(struct asn1_data *data, uint8_t tag)
|
||||||
{
|
{
|
||||||
uint8_t b;
|
uint8_t b;
|
||||||
struct nesting *nesting;
|
struct nesting *nesting;
|
||||||
@@ -378,7 +379,7 @@ BOOL asn1_start_tag(ASN1_DATA *data, uint8_t tag)
|
|||||||
return !data->has_error;
|
return !data->has_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL read_one_uint8(int sock, uint8_t *result, ASN1_DATA *data,
|
static BOOL read_one_uint8(int sock, uint8_t *result, struct asn1_data *data,
|
||||||
const struct timeval *endtime)
|
const struct timeval *endtime)
|
||||||
{
|
{
|
||||||
if (read_data_until(sock, result, 1, endtime) != 1)
|
if (read_data_until(sock, result, 1, endtime) != 1)
|
||||||
@@ -388,7 +389,7 @@ static BOOL read_one_uint8(int sock, uint8_t *result, ASN1_DATA *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Read a complete ASN sequence (ie LDAP result) from a socket */
|
/* Read a complete ASN sequence (ie LDAP result) from a socket */
|
||||||
BOOL asn1_read_sequence_until(int sock, ASN1_DATA *data,
|
BOOL asn1_read_sequence_until(int sock, struct asn1_data *data,
|
||||||
const struct timeval *endtime)
|
const struct timeval *endtime)
|
||||||
{
|
{
|
||||||
uint8_t b;
|
uint8_t b;
|
||||||
@@ -444,7 +445,7 @@ BOOL asn1_read_sequence_until(int sock, ASN1_DATA *data,
|
|||||||
BOOL asn1_object_length(uint8_t *buf, size_t buf_length,
|
BOOL asn1_object_length(uint8_t *buf, size_t buf_length,
|
||||||
uint8_t tag, size_t *result)
|
uint8_t tag, size_t *result)
|
||||||
{
|
{
|
||||||
ASN1_DATA data;
|
struct asn1_data data;
|
||||||
|
|
||||||
/* Fake the asn1_load to avoid the memdup, this is just to be able to
|
/* Fake the asn1_load to avoid the memdup, this is just to be able to
|
||||||
* re-use the length-reading in asn1_start_tag */
|
* re-use the length-reading in asn1_start_tag */
|
||||||
@@ -461,7 +462,7 @@ BOOL asn1_object_length(uint8_t *buf, size_t buf_length,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* stop reading a tag */
|
/* stop reading a tag */
|
||||||
BOOL asn1_end_tag(ASN1_DATA *data)
|
BOOL asn1_end_tag(struct asn1_data *data)
|
||||||
{
|
{
|
||||||
struct nesting *nesting;
|
struct nesting *nesting;
|
||||||
|
|
||||||
@@ -484,7 +485,7 @@ BOOL asn1_end_tag(ASN1_DATA *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* work out how many bytes are left in this nested tag */
|
/* work out how many bytes are left in this nested tag */
|
||||||
int asn1_tag_remaining(ASN1_DATA *data)
|
int asn1_tag_remaining(struct asn1_data *data)
|
||||||
{
|
{
|
||||||
if (!data->nesting) {
|
if (!data->nesting) {
|
||||||
data->has_error = True;
|
data->has_error = True;
|
||||||
@@ -494,7 +495,7 @@ int asn1_tag_remaining(ASN1_DATA *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* read an object ID from a ASN1 buffer */
|
/* read an object ID from a ASN1 buffer */
|
||||||
BOOL asn1_read_OID(ASN1_DATA *data, const char **OID)
|
BOOL asn1_read_OID(struct asn1_data *data, const char **OID)
|
||||||
{
|
{
|
||||||
uint8_t b;
|
uint8_t b;
|
||||||
char *tmp_oid = NULL;
|
char *tmp_oid = NULL;
|
||||||
@@ -523,7 +524,7 @@ BOOL asn1_read_OID(ASN1_DATA *data, const char **OID)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* check that the next object ID is correct */
|
/* check that the next object ID is correct */
|
||||||
BOOL asn1_check_OID(ASN1_DATA *data, const char *OID)
|
BOOL asn1_check_OID(struct asn1_data *data, const char *OID)
|
||||||
{
|
{
|
||||||
const char *id;
|
const char *id;
|
||||||
|
|
||||||
@@ -538,7 +539,7 @@ BOOL asn1_check_OID(ASN1_DATA *data, const char *OID)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* read a GeneralString from a ASN1 buffer */
|
/* read a GeneralString from a ASN1 buffer */
|
||||||
BOOL asn1_read_GeneralString(ASN1_DATA *data, char **s)
|
BOOL asn1_read_GeneralString(struct asn1_data *data, char **s)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
if (!asn1_start_tag(data, ASN1_GENERAL_STRING)) return False;
|
if (!asn1_start_tag(data, ASN1_GENERAL_STRING)) return False;
|
||||||
@@ -559,7 +560,7 @@ BOOL asn1_read_GeneralString(ASN1_DATA *data, char **s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* read a octet string blob */
|
/* read a octet string blob */
|
||||||
BOOL asn1_read_OctetString(ASN1_DATA *data, DATA_BLOB *blob)
|
BOOL asn1_read_OctetString(struct asn1_data *data, DATA_BLOB *blob)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
ZERO_STRUCTP(blob);
|
ZERO_STRUCTP(blob);
|
||||||
@@ -581,7 +582,7 @@ BOOL asn1_read_OctetString(ASN1_DATA *data, DATA_BLOB *blob)
|
|||||||
return True;
|
return True;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL asn1_read_ContextSimple(ASN1_DATA *data, uint8_t num, DATA_BLOB *blob)
|
BOOL asn1_read_ContextSimple(struct asn1_data *data, uint8_t num, DATA_BLOB *blob)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
ZERO_STRUCTP(blob);
|
ZERO_STRUCTP(blob);
|
||||||
@@ -598,7 +599,7 @@ BOOL asn1_read_ContextSimple(ASN1_DATA *data, uint8_t num, DATA_BLOB *blob)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* read an interger without tag*/
|
/* read an interger without tag*/
|
||||||
BOOL asn1_read_implicit_Integer(ASN1_DATA *data, int *i)
|
BOOL asn1_read_implicit_Integer(struct asn1_data *data, int *i)
|
||||||
{
|
{
|
||||||
uint8_t b;
|
uint8_t b;
|
||||||
*i = 0;
|
*i = 0;
|
||||||
@@ -612,7 +613,7 @@ BOOL asn1_read_implicit_Integer(ASN1_DATA *data, int *i)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* read an interger */
|
/* read an interger */
|
||||||
BOOL asn1_read_Integer(ASN1_DATA *data, int *i)
|
BOOL asn1_read_Integer(struct asn1_data *data, int *i)
|
||||||
{
|
{
|
||||||
*i = 0;
|
*i = 0;
|
||||||
|
|
||||||
@@ -623,7 +624,7 @@ BOOL asn1_read_Integer(ASN1_DATA *data, int *i)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* read an interger */
|
/* read an interger */
|
||||||
BOOL asn1_read_enumerated(ASN1_DATA *data, int *v)
|
BOOL asn1_read_enumerated(struct asn1_data *data, int *v)
|
||||||
{
|
{
|
||||||
*v = 0;
|
*v = 0;
|
||||||
|
|
||||||
@@ -637,7 +638,7 @@ BOOL asn1_read_enumerated(ASN1_DATA *data, int *v)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* check a enumarted value is correct */
|
/* check a enumarted value is correct */
|
||||||
BOOL asn1_check_enumerated(ASN1_DATA *data, int v)
|
BOOL asn1_check_enumerated(struct asn1_data *data, int v)
|
||||||
{
|
{
|
||||||
uint8_t b;
|
uint8_t b;
|
||||||
if (!asn1_start_tag(data, ASN1_ENUMERATED)) return False;
|
if (!asn1_start_tag(data, ASN1_ENUMERATED)) return False;
|
||||||
@@ -651,7 +652,7 @@ BOOL asn1_check_enumerated(ASN1_DATA *data, int v)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* write an enumarted value to the stream */
|
/* write an enumarted value to the stream */
|
||||||
BOOL asn1_write_enumerated(ASN1_DATA *data, uint8_t v)
|
BOOL asn1_write_enumerated(struct asn1_data *data, uint8_t v)
|
||||||
{
|
{
|
||||||
if (!asn1_push_tag(data, ASN1_ENUMERATED)) return False;
|
if (!asn1_push_tag(data, ASN1_ENUMERATED)) return False;
|
||||||
asn1_write_uint8(data, v);
|
asn1_write_uint8(data, v);
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
#define NDR_BASE_MARSHALL_SIZE 1024
|
#define NDR_BASE_MARSHALL_SIZE 1024
|
||||||
|
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
#include "librpc/gen_ndr/ndr_epmapper.h"
|
#include "librpc/gen_ndr/ndr_epmapper.h"
|
||||||
|
|
||||||
/* initialise a dcerpc pipe. */
|
/* initialise a dcerpc pipe. */
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
#include "librpc/gen_ndr/ndr_epmapper.h"
|
#include "librpc/gen_ndr/ndr_epmapper.h"
|
||||||
|
|
||||||
#define MIN_HDR_SIZE 16
|
#define MIN_HDR_SIZE 16
|
||||||
|
@@ -26,6 +26,7 @@
|
|||||||
used. This allows us to provide the same semantics as NT */
|
used. This allows us to provide the same semantics as NT */
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "messages.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
in this module a "DATA_BLOB *file_key" is a blob that uniquely identifies
|
in this module a "DATA_BLOB *file_key" is a blob that uniquely identifies
|
||||||
|
@@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "system/filesys.h"
|
#include "system/filesys.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
/* this is the private structure used to keep the state of an open
|
/* this is the private structure used to keep the state of an open
|
||||||
ipc$ connection. It needs to keep information about all open
|
ipc$ connection. It needs to keep information about all open
|
||||||
|
@@ -24,6 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
|
|
||||||
/* the list of currently registered NTVFS backends, note that there
|
/* the list of currently registered NTVFS backends, note that there
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
NTSTATUS ntvfs_async_state_push(struct smbsrv_request *req,
|
NTSTATUS ntvfs_async_state_push(struct smbsrv_request *req,
|
||||||
void *private_data,
|
void *private_data,
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include "include/includes.h"
|
#include "include/includes.h"
|
||||||
#include "vfs_posix.h"
|
#include "vfs_posix.h"
|
||||||
|
#include "ioctl.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
old ioctl interface
|
old ioctl interface
|
||||||
|
@@ -23,6 +23,8 @@
|
|||||||
#include "include/includes.h"
|
#include "include/includes.h"
|
||||||
#include "vfs_posix.h"
|
#include "vfs_posix.h"
|
||||||
#include "system/time.h"
|
#include "system/time.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
#include "messages.h"
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -24,6 +24,7 @@
|
|||||||
#include "vfs_posix.h"
|
#include "vfs_posix.h"
|
||||||
#include "system/time.h"
|
#include "system/time.h"
|
||||||
#include "system/filesys.h"
|
#include "system/filesys.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
create file handles with convenient numbers for sniffers
|
create file handles with convenient numbers for sniffers
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "ioctl.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
connect to a share - used when a tree_connect operation comes
|
connect to a share - used when a tree_connect operation comes
|
||||||
|
@@ -29,6 +29,7 @@
|
|||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "svfs.h"
|
#include "svfs.h"
|
||||||
#include "system/time.h"
|
#include "system/time.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
#ifndef O_DIRECTORY
|
#ifndef O_DIRECTORY
|
||||||
#define O_DIRECTORY 0
|
#define O_DIRECTORY 0
|
||||||
|
@@ -57,6 +57,7 @@
|
|||||||
#include "system/iconv.h"
|
#include "system/iconv.h"
|
||||||
#include "system/network.h"
|
#include "system/network.h"
|
||||||
#include "librpc/gen_ndr/ndr_svcctl.h"
|
#include "librpc/gen_ndr/ndr_svcctl.h"
|
||||||
|
#include "include/dlinklist.h"
|
||||||
|
|
||||||
BOOL in_client = False; /* Not in the client by default */
|
BOOL in_client = False; /* Not in the client by default */
|
||||||
static BOOL bLoaded = False;
|
static BOOL bLoaded = False;
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
#include "librpc/gen_ndr/ndr_epmapper.h"
|
#include "librpc/gen_ndr/ndr_epmapper.h"
|
||||||
#include "librpc/gen_ndr/ndr_oxidresolver.h"
|
#include "librpc/gen_ndr/ndr_oxidresolver.h"
|
||||||
#include "auth/auth.h"
|
#include "auth/auth.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
see if two endpoints match
|
see if two endpoints match
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
allocate a new rpc handle
|
allocate a new rpc handle
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "system/filesys.h"
|
#include "system/filesys.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
init the tcon structures
|
init the tcon structures
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "auth/auth.h"
|
#include "auth/auth.h"
|
||||||
|
#include "asn_1.h"
|
||||||
|
|
||||||
/* initialise the auth_context for this server and return the cryptkey */
|
/* initialise the auth_context for this server and return the cryptkey */
|
||||||
static void get_challenge(struct smbsrv_connection *smb_conn, char buff[8])
|
static void get_challenge(struct smbsrv_connection *smb_conn, char buff[8])
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
/* we over allocate the data buffer to prevent too many realloc calls */
|
/* we over allocate the data buffer to prevent too many realloc calls */
|
||||||
#define REQ_OVER_ALLOCATION 256
|
#define REQ_OVER_ALLOCATION 256
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "auth/auth.h"
|
#include "auth/auth.h"
|
||||||
|
#include "asn_1.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
setup the OS, Lanman and domain portions of a session setup reply
|
setup the OS, Lanman and domain portions of a session setup reply
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "system/time.h"
|
#include "system/time.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
called when the process model is selected
|
called when the process model is selected
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "system/dir.h"
|
#include "system/dir.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
struct server_context *server_service_startup(const char *model)
|
struct server_context *server_service_startup(const char *model)
|
||||||
{
|
{
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
int create_complex_file(struct smbcli_state *cli, TALLOC_CTX *mem_ctx, const char *fname);
|
int create_complex_file(struct smbcli_state *cli, TALLOC_CTX *mem_ctx, const char *fname);
|
||||||
|
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "asn_1.h"
|
||||||
|
|
||||||
NTSTATUS torture_ldap_bind(struct ldap_connection *conn, const char *userdn, const char *password)
|
NTSTATUS torture_ldap_bind(struct ldap_connection *conn, const char *userdn, const char *password)
|
||||||
{
|
{
|
||||||
@@ -111,7 +112,7 @@ BOOL ldap_sasl_send_msg(struct ldap_connection *conn, struct ldap_message *msg,
|
|||||||
DATA_BLOB creds;
|
DATA_BLOB creds;
|
||||||
DATA_BLOB pdu;
|
DATA_BLOB pdu;
|
||||||
int len;
|
int len;
|
||||||
ASN1_DATA asn1;
|
struct asn1_data asn1;
|
||||||
TALLOC_CTX *mem_ctx;
|
TALLOC_CTX *mem_ctx;
|
||||||
|
|
||||||
msg->messageid = conn->next_msgid++;
|
msg->messageid = conn->next_msgid++;
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "system/time.h"
|
#include "system/time.h"
|
||||||
|
#include "dlinklist.h"
|
||||||
|
|
||||||
#define MAX_FILES 100
|
#define MAX_FILES 100
|
||||||
|
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include "ioctl.h"
|
||||||
|
|
||||||
#define BASEDIR "\\rawioctl"
|
#define BASEDIR "\\rawioctl"
|
||||||
|
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
#include "libcli/raw/libcliraw.h"
|
#include "libcli/raw/libcliraw.h"
|
||||||
#include "system/time.h"
|
#include "system/time.h"
|
||||||
#include "system/wait.h"
|
#include "system/wait.h"
|
||||||
|
#include "ioctl.h"
|
||||||
|
|
||||||
int torture_nprocs=4;
|
int torture_nprocs=4;
|
||||||
int torture_numops=100;
|
int torture_numops=100;
|
||||||
|
@@ -26,6 +26,7 @@
|
|||||||
#include "system/passwd.h"
|
#include "system/passwd.h"
|
||||||
#include "lib/cmdline/popt_common.h"
|
#include "lib/cmdline/popt_common.h"
|
||||||
#include "auth/auth.h"
|
#include "auth/auth.h"
|
||||||
|
#include "asn_1.h"
|
||||||
|
|
||||||
#undef DBGC_CLASS
|
#undef DBGC_CLASS
|
||||||
#define DBGC_CLASS DBGC_WINBIND
|
#define DBGC_CLASS DBGC_WINBIND
|
||||||
|
Reference in New Issue
Block a user