magic in TDB struct list_struct possibly in wrong position ...

Richard Sharpe realrichardsharpe at gmail.com
Mon Jan 19 21:24:59 GMT 2009


Hi,

I notice that in tdb_internal we have:

struct list_struct {
        tdb_off_t next; /* offset of the next record in the list */
        tdb_len_t rec_len; /* total byte length of record */
        tdb_len_t key_len; /* byte length of key */
        tdb_len_t data_len; /* byte length of data */
        u32 full_hash; /* the full 32 bit hash of the key */
        u32 magic;   /* try to catch errors */
        /* the following union is implied:
                union {
                        char record[rec_len];
                        struct {
                                char key[key_len];
                                char data[data_len];
                        }
                        u32 totalsize; (tailer)
                }
        */
};

However, I would imagine that a common error is to write more data
than we said we would in a record.

We would catch more of these cases if magic was the first field in the
list_struct it seems to me.

-- 
Regards,
Richard Sharpe


More information about the samba-technical mailing list