mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
r21960: Fix bugs 4463,4464,4465,4466. Thanks Jason :-)
(This used to be commit a2e27c4431
)
This commit is contained in:
parent
643157ff5a
commit
eca13022ef
@ -25,18 +25,6 @@
|
||||
#undef calloc
|
||||
#undef strdup
|
||||
|
||||
/***************************************************************
|
||||
Allow a caller to set a "alarm" flag that tdb can check to abort
|
||||
a blocking lock on SIGALRM.
|
||||
***************************************************************/
|
||||
|
||||
static sig_atomic_t *palarm_fired;
|
||||
|
||||
static void tdb_set_lock_alarm(sig_atomic_t *palarm)
|
||||
{
|
||||
palarm_fired = palarm;
|
||||
}
|
||||
|
||||
/* these are little tdb utility functions that are meant to make
|
||||
dealing with a tdb database a little less cumbersome in Samba */
|
||||
|
||||
@ -77,7 +65,6 @@ static int tdb_chainlock_with_timeout_internal( TDB_CONTEXT *tdb, TDB_DATA key,
|
||||
/* Allow tdb_chainlock to be interrupted by an alarm. */
|
||||
int ret;
|
||||
gotalarm = 0;
|
||||
tdb_set_lock_alarm(CONST_DISCARD(sig_atomic_t *, &gotalarm));
|
||||
|
||||
if (timeout) {
|
||||
CatchSignal(SIGALRM, SIGNAL_CAST gotalarm_sig);
|
||||
|
@ -130,7 +130,7 @@ static NTSTATUS ndr_pull_security_ace_type(struct ndr_pull *ndr, int ndr_flags,
|
||||
{
|
||||
uint8_t v;
|
||||
NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &v));
|
||||
*r = v;
|
||||
*r = (enum security_ace_type)v;
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
@ -559,7 +559,7 @@ static NTSTATUS ndr_pull_security_acl_revision(struct ndr_pull *ndr, int ndr_fla
|
||||
{
|
||||
uint16_t v;
|
||||
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
|
||||
*r = v;
|
||||
*r = (enum security_acl_revision)v;
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
@ -603,7 +603,7 @@ NTSTATUS ndr_pull_security_acl(struct ndr_pull *ndr, int ndr_flags, struct secur
|
||||
NDR_CHECK(ndr_pull_security_acl_revision(ndr, NDR_SCALARS, &r->revision));
|
||||
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
|
||||
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_aces));
|
||||
if (r->num_aces < 0 || r->num_aces > 1000) {
|
||||
if (r->num_aces > 1000) { /* num_aces is unsigned */
|
||||
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
|
||||
}
|
||||
NDR_PULL_ALLOC_N(ndr, r->aces, r->num_aces);
|
||||
@ -657,7 +657,7 @@ static NTSTATUS ndr_pull_security_descriptor_revision(struct ndr_pull *ndr, int
|
||||
{
|
||||
uint8_t v;
|
||||
NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &v));
|
||||
*r = v;
|
||||
*r = (enum security_descriptor_revision)v;
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
|
@ -211,7 +211,7 @@ NTSTATUS ndr_pull_sec_desc_buf(struct ndr_pull *ndr, int ndr_flags, struct sec_d
|
||||
if (ndr_flags & NDR_SCALARS) {
|
||||
NDR_CHECK(ndr_pull_align(ndr, 4));
|
||||
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sd_size));
|
||||
if (r->sd_size < 0 || r->sd_size > 0x40000) {
|
||||
if (r->sd_size > 0x40000) { /* sd_size is unsigned */
|
||||
return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
|
||||
}
|
||||
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd));
|
||||
|
@ -242,13 +242,11 @@ static BOOL parse_msdfs_symlink(TALLOC_CTX *ctx,
|
||||
int *refcount)
|
||||
{
|
||||
pstring temp;
|
||||
char *prot;
|
||||
char *alt_path[MAX_REFERRAL_COUNT];
|
||||
int count = 0, i;
|
||||
struct referral *reflist;
|
||||
|
||||
pstrcpy(temp,target);
|
||||
prot = strtok(temp,":");
|
||||
|
||||
/* parse out the alternate paths */
|
||||
while((count<MAX_REFERRAL_COUNT) &&
|
||||
|
Loading…
Reference in New Issue
Block a user