r21960: Fix bugs 4463,4464,4465,4466. Thanks Jason :-)
authorVolker Lendecke <vlendec@samba.org>
Sat, 24 Mar 2007 18:14:46 +0000 (18:14 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:18:52 +0000 (12:18 -0500)
source/lib/util_tdb.c
source/librpc/ndr/ndr_sec_helper.c
source/librpc/ndr/sid.c
source/smbd/msdfs.c

index b559f589dc53e801ff446fd752571504b7fe83c0..9e911a653ce47e4e42ebabc1c1cf46358da08385 100644 (file)
 #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);
index 944b172d6cde82caf5337f445096b382f9ed5984..46dd5d558061ae2c175f338740122e415ed79d1f 100644 (file)
@@ -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;
 }
 
index 0a9ddb883b2a788c2d8c4621c771b76ce1a42ddf..61790b36306ab5292ac583f6073900b833683157 100644 (file)
@@ -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));
index 13c44e942009c96c02347bec71fa17717fb16cac..8f85b90fdcfd4221236792dd54363950f3d47685 100644 (file)
@@ -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) &&