mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
Merge branch 'v4-0-test' of ssh://git.samba.org/data/git/samba into 4-0-abartlet
(This used to be commit 43fc10aaa7
)
This commit is contained in:
commit
22bbb0ebe6
@ -21,7 +21,7 @@ extern int LogLevel;
|
||||
#define ZERO_STRUCT(x) memset((char *)&(x), 0, sizeof(x))
|
||||
|
||||
#ifndef discard_const
|
||||
#define discard_const(ptr) ((void *)((intptr_t)(ptr)))
|
||||
#define discard_const(ptr) ((void *)((uintptr_t)(ptr)))
|
||||
#endif
|
||||
|
||||
struct timeval timeval_zero(void);
|
||||
|
@ -545,7 +545,7 @@ static int ltdb_index_dn_one(struct ldb_module *module,
|
||||
|
||||
/* the attribute is indexed. Pull the list of DNs that match the
|
||||
search criterion */
|
||||
val.data = (uint8_t *)((intptr_t)ldb_dn_get_casefold(parent_dn));
|
||||
val.data = (uint8_t *)((uintptr_t)ldb_dn_get_casefold(parent_dn));
|
||||
val.length = strlen((char *)val.data);
|
||||
key = ltdb_index_key(ldb, LTDB_IDXONE, &val);
|
||||
if (!key) {
|
||||
@ -1140,7 +1140,7 @@ int ltdb_index_one(struct ldb_module *module, const struct ldb_message *msg, int
|
||||
return LDB_ERR_OPERATIONS_ERROR;
|
||||
}
|
||||
|
||||
val.data = (uint8_t *)((intptr_t)ldb_dn_get_casefold(pdn));
|
||||
val.data = (uint8_t *)((uintptr_t)ldb_dn_get_casefold(pdn));
|
||||
if (val.data == NULL) {
|
||||
talloc_free(pdn);
|
||||
return LDB_ERR_OPERATIONS_ERROR;
|
||||
|
@ -132,7 +132,8 @@ AC_CHECK_SIZEOF(off_t)
|
||||
AC_CHECK_SIZEOF(size_t)
|
||||
AC_CHECK_SIZEOF(ssize_t)
|
||||
|
||||
AC_CHECK_TYPE(intptr_t, unsigned long long)
|
||||
AC_CHECK_TYPE(intptr_t, long long)
|
||||
AC_CHECK_TYPE(uintptr_t, unsigned long long)
|
||||
AC_CHECK_TYPE(ptrdiff_t, unsigned long long)
|
||||
|
||||
if test x"$ac_cv_type_long_long" != x"yes";then
|
||||
|
@ -458,7 +458,7 @@ char *rep_strcasestr(const char *haystack, const char *needle)
|
||||
for (s=haystack;*s;s++) {
|
||||
if (toupper(*needle) == toupper(*s) &&
|
||||
strncasecmp(s, needle, nlen) == 0) {
|
||||
return (char *)((intptr_t)s);
|
||||
return (char *)((uintptr_t)s);
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
|
@ -499,7 +499,7 @@ typedef int bool;
|
||||
Also, please call this via the discard_const_p() macro interface, as that
|
||||
makes the return type safe.
|
||||
*/
|
||||
#define discard_const(ptr) ((void *)((intptr_t)(ptr)))
|
||||
#define discard_const(ptr) ((void *)((uintptr_t)(ptr)))
|
||||
|
||||
/** Type-safe version of discard_const */
|
||||
#define discard_const_p(type, ptr) ((type *)discard_const(ptr))
|
||||
|
@ -64,7 +64,7 @@ extern const char *panic_action;
|
||||
makes the return type safe.
|
||||
*/
|
||||
#ifndef discard_const
|
||||
#define discard_const(ptr) ((void *)((intptr_t)(ptr)))
|
||||
#define discard_const(ptr) ((void *)((uintptr_t)(ptr)))
|
||||
#endif
|
||||
|
||||
/** Type-safe version of discard_const */
|
||||
|
@ -700,10 +700,10 @@ DATA_BLOB smbcli_req_pull_blob(struct request_bufinfo *bufinfo, TALLOC_CTX *mem_
|
||||
static bool smbcli_req_data_oob(struct request_bufinfo *bufinfo, const uint8_t *ptr, uint32_t count)
|
||||
{
|
||||
/* be careful with wraparound! */
|
||||
if (ptr < bufinfo->data ||
|
||||
ptr >= bufinfo->data + bufinfo->data_size ||
|
||||
if ((uintptr_t)ptr < (uintptr_t)bufinfo->data ||
|
||||
(uintptr_t)ptr >= (uintptr_t)bufinfo->data + bufinfo->data_size ||
|
||||
count > bufinfo->data_size ||
|
||||
ptr + count > bufinfo->data + bufinfo->data_size) {
|
||||
(uintptr_t)ptr + count > (uintptr_t)bufinfo->data + bufinfo->data_size) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -40,10 +40,10 @@ static bool raw_trans_oob(struct smbcli_request *req,
|
||||
ptr = req->in.hdr + offset;
|
||||
|
||||
/* be careful with wraparound! */
|
||||
if (ptr < req->in.data ||
|
||||
ptr >= req->in.data + req->in.data_size ||
|
||||
if ((uintptr_t)ptr < (uintptr_t)req->in.data ||
|
||||
(uintptr_t)ptr >= (uintptr_t)req->in.data + req->in.data_size ||
|
||||
count > req->in.data_size ||
|
||||
ptr + count > req->in.data + req->in.data_size) {
|
||||
(uintptr_t)ptr + count > (uintptr_t)req->in.data + req->in.data_size) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -211,10 +211,10 @@ bool smb2_oob(struct smb2_request_buffer *buf, const uint8_t *ptr, size_t size)
|
||||
return false;
|
||||
}
|
||||
/* be careful with wraparound! */
|
||||
if (ptr < buf->body ||
|
||||
ptr >= buf->body + buf->body_size ||
|
||||
if ((uintptr_t)ptr < (uintptr_t)buf->body ||
|
||||
(uintptr_t)ptr >= (uintptr_t)buf->body + buf->body_size ||
|
||||
size > buf->body_size ||
|
||||
ptr + size > buf->body + buf->body_size) {
|
||||
(uintptr_t)ptr + size > (uintptr_t)buf->body + buf->body_size) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@ -669,7 +669,7 @@ NTSTATUS smb2_push_o16s16_string(struct smb2_request_buffer *buf,
|
||||
}
|
||||
|
||||
if (*str == 0) {
|
||||
blob.data = str;
|
||||
blob.data = discard_const(str);
|
||||
blob.length = 0;
|
||||
return smb2_push_o16s16_blob(buf, ofs, blob);
|
||||
}
|
||||
|
@ -440,9 +440,8 @@ interface nbt
|
||||
nstring unicode_domain;
|
||||
uint32 db_count;
|
||||
nbt_db_change dbchange[db_count];
|
||||
[value(ndr_size_dom_sid(&sid, ndr->flags))] uint32 sid_size;
|
||||
[flag(NDR_ALIGN4)] DATA_BLOB _pad2;
|
||||
dom_sid sid;
|
||||
[value(ndr_size_dom_sid0(&sid, ndr->flags))] uint32 sid_size;
|
||||
[subcontext(0),subcontext_size(sid_size)] dom_sid0 sid;
|
||||
uint32 nt_version;
|
||||
uint16 lmnt_token;
|
||||
uint16 lm20_token;
|
||||
@ -560,9 +559,8 @@ interface nbt
|
||||
nstring user_name;
|
||||
astring mailslot_name;
|
||||
uint32 acct_control;
|
||||
[value(ndr_size_dom_sid(&sid, ndr->flags))] uint32 sid_size;
|
||||
[flag(NDR_ALIGN4)] DATA_BLOB _pad;
|
||||
dom_sid sid;
|
||||
[value(ndr_size_dom_sid0(&sid, ndr->flags))] uint32 sid_size;
|
||||
[subcontext(0),subcontext_size(sid_size)] dom_sid0 sid;
|
||||
uint32 nt_version;
|
||||
uint16 lmnt_token;
|
||||
uint16 lm20_token;
|
||||
|
@ -22,6 +22,9 @@ cpp_quote("#define dom_sid2 dom_sid")
|
||||
/* same struct as dom_sid but inside a 28 bytes fixed buffer in NDR */
|
||||
cpp_quote("#define dom_sid28 dom_sid")
|
||||
|
||||
/* same struct as dom_sid but in a variable byte buffer, which is maybe empty in NDR */
|
||||
cpp_quote("#define dom_sid0 dom_sid")
|
||||
|
||||
[
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
@ -336,6 +336,10 @@ enum ndr_err_code ndr_push_dom_sid28(struct ndr_push *ndr, int ndr_flags, const
|
||||
enum ndr_err_code ndr_pull_dom_sid28(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *sid);
|
||||
void ndr_print_dom_sid28(struct ndr_print *ndr, const char *name, const struct dom_sid *sid);
|
||||
size_t ndr_size_dom_sid28(const struct dom_sid *sid, int flags);
|
||||
enum ndr_err_code ndr_push_dom_sid0(struct ndr_push *ndr, int ndr_flags, const struct dom_sid *sid);
|
||||
enum ndr_err_code ndr_pull_dom_sid0(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *sid);
|
||||
void ndr_print_dom_sid0(struct ndr_print *ndr, const char *name, const struct dom_sid *sid);
|
||||
size_t ndr_size_dom_sid0(const struct dom_sid *sid, int flags);
|
||||
void ndr_print_ipv4_addr(struct ndr_print *ndr, const char *name, const struct in_addr *_ip);
|
||||
void ndr_print_GUID(struct ndr_print *ndr, const char *name, const struct GUID *guid);
|
||||
enum ndr_err_code ndr_push_struct_blob(DATA_BLOB *blob, TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience, const void *p, ndr_push_flags_fn_t fn);
|
||||
|
@ -196,7 +196,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_hyper(struct ndr_pull *ndr, int ndr_flags, u
|
||||
*/
|
||||
_PUBLIC_ enum ndr_err_code ndr_pull_pointer(struct ndr_pull *ndr, int ndr_flags, void* *v)
|
||||
{
|
||||
intptr_t h;
|
||||
uintptr_t h;
|
||||
NDR_PULL_ALIGN(ndr, sizeof(h));
|
||||
NDR_PULL_NEED_BYTES(ndr, sizeof(h));
|
||||
memcpy(&h, ndr->data+ndr->offset, sizeof(h));
|
||||
@ -393,7 +393,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_hyper(struct ndr_push *ndr, int ndr_flags, u
|
||||
*/
|
||||
_PUBLIC_ enum ndr_err_code ndr_push_pointer(struct ndr_push *ndr, int ndr_flags, void* v)
|
||||
{
|
||||
intptr_t h = (intptr_t)v;
|
||||
uintptr_t h = (intptr_t)v;
|
||||
NDR_PUSH_ALIGN(ndr, sizeof(h));
|
||||
NDR_PUSH_NEED_BYTES(ndr, sizeof(h));
|
||||
memcpy(ndr->data+ndr->offset, &h, sizeof(h));
|
||||
|
@ -48,6 +48,11 @@ size_t ndr_size_dom_sid28(const struct dom_sid *sid, int flags)
|
||||
return 8 + 4*sid->num_auths;
|
||||
}
|
||||
|
||||
size_t ndr_size_dom_sid0(const struct dom_sid *sid, int flags)
|
||||
{
|
||||
return ndr_size_dom_sid28(sid, flags);
|
||||
}
|
||||
|
||||
/*
|
||||
return the wire size of a security_ace
|
||||
*/
|
||||
@ -128,6 +133,11 @@ void ndr_print_dom_sid28(struct ndr_print *ndr, const char *name, const struct d
|
||||
ndr_print_dom_sid(ndr, name, sid);
|
||||
}
|
||||
|
||||
void ndr_print_dom_sid0(struct ndr_print *ndr, const char *name, const struct dom_sid *sid)
|
||||
{
|
||||
ndr_print_dom_sid(ndr, name, sid);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
parse a dom_sid2 - this is a dom_sid but with an extra copy of the num_auths field
|
||||
@ -225,3 +235,44 @@ enum ndr_err_code ndr_push_dom_sid28(struct ndr_push *ndr, int ndr_flags, const
|
||||
return NDR_ERR_SUCCESS;
|
||||
}
|
||||
|
||||
/*
|
||||
parse a dom_sid0 - this is a dom_sid in a variable byte buffer, which is maybe empty
|
||||
*/
|
||||
enum ndr_err_code ndr_pull_dom_sid0(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *sid)
|
||||
{
|
||||
if (!(ndr_flags & NDR_SCALARS)) {
|
||||
return NDR_ERR_SUCCESS;
|
||||
}
|
||||
|
||||
if (ndr->data_size == ndr->offset) {
|
||||
ZERO_STRUCTP(sid);
|
||||
return NDR_ERR_SUCCESS;
|
||||
}
|
||||
|
||||
return ndr_pull_dom_sid(ndr, ndr_flags, sid);
|
||||
}
|
||||
|
||||
/*
|
||||
push a dom_sid0 - this is a dom_sid in a variable byte buffer, which is maybe empty
|
||||
*/
|
||||
enum ndr_err_code ndr_push_dom_sid0(struct ndr_push *ndr, int ndr_flags, const struct dom_sid *sid)
|
||||
{
|
||||
struct dom_sid zero_sid;
|
||||
|
||||
if (!(ndr_flags & NDR_SCALARS)) {
|
||||
return NDR_ERR_SUCCESS;
|
||||
}
|
||||
|
||||
if (!sid) {
|
||||
return NDR_ERR_SUCCESS;
|
||||
}
|
||||
|
||||
ZERO_STRUCT(zero_sid);
|
||||
|
||||
if (memcmp(&zero_sid, sid, sizeof(zero_sid)) == 0) {
|
||||
return NDR_ERR_SUCCESS;
|
||||
}
|
||||
|
||||
return ndr_push_dom_sid(ndr, ndr_flags, sid);
|
||||
}
|
||||
|
||||
|
@ -651,10 +651,10 @@ bool req_data_oob(struct request_bufinfo *bufinfo, const uint8_t *ptr, uint32_t
|
||||
}
|
||||
|
||||
/* be careful with wraparound! */
|
||||
if (ptr < bufinfo->data ||
|
||||
ptr >= bufinfo->data + bufinfo->data_size ||
|
||||
if ((uintptr_t)ptr < (uintptr_t)bufinfo->data ||
|
||||
(uintptr_t)ptr >= (uintptr_t)bufinfo->data + bufinfo->data_size ||
|
||||
count > bufinfo->data_size ||
|
||||
ptr + count > bufinfo->data + bufinfo->data_size) {
|
||||
(uintptr_t)ptr + count > (uintptr_t)bufinfo->data + bufinfo->data_size) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
Loading…
Reference in New Issue
Block a user