diff options
author | Andrew Bartlett <abartlet@samba.org> | 2011-06-24 16:26:23 +1000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2011-06-24 16:26:23 +1000 |
commit | 6da26870e0ae5acd6ff49a30ec2f6886b44d095e (patch) | |
tree | 850c71039563c16a5d563c47e7ba2ab645baf198 /source3/winbindd/idmap_tdb.c | |
parent | 6925a799d04c6fa59dd2ddef1f5510f9bb7d17d1 (diff) | |
parent | 2610c05b5b95cc7036b3d6dfb894c6cfbdb68483 (diff) | |
download | samba-4.0.0alpha16.tar.gz samba-4.0.0alpha16.tar.xz samba-4.0.0alpha16.zip |
Merge 2610c05b5b95cc7036b3d6dfb894c6cfbdb68483 as Samba-4.0alpha16samba-4.0.0alpha16
Diffstat (limited to 'source3/winbindd/idmap_tdb.c')
-rw-r--r-- | source3/winbindd/idmap_tdb.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/source3/winbindd/idmap_tdb.c b/source3/winbindd/idmap_tdb.c index 19e7f0e1d5f..d99d2f0e4e9 100644 --- a/source3/winbindd/idmap_tdb.c +++ b/source3/winbindd/idmap_tdb.c @@ -30,6 +30,7 @@ #include "idmap_rw.h" #include "dbwrap.h" #include "../libcli/security/security.h" +#include "util_tdb.h" #undef DBGC_CLASS #define DBGC_CLASS DBGC_IDMAP @@ -145,9 +146,23 @@ static bool idmap_tdb_upgrade(struct idmap_domain *dom, struct db_context *db) bool bigendianheader; struct convert_fn_state s; - DEBUG(0, ("Upgrading winbindd_idmap.tdb from an old version\n")); - +#if BUILD_TDB2 + /* If we are bigendian, tdb is bigendian if NOT converted. */ + union { + uint16 large; + unsigned char small[2]; + } u; + u.large = 0x0102; + if (u.small[0] == 0x01) + bigendianheader = !(db->get_flags(db) & TDB_CONVERT); + else { + assert(u.small[0] == 0x02); + bigendianheader = (db->get_flags(db) & TDB_CONVERT); + } +#else bigendianheader = (db->get_flags(db) & TDB_BIGENDIAN) ? True : False; +#endif + DEBUG(0, ("Upgrading winbindd_idmap.tdb from an old version\n")); vers = dbwrap_fetch_int32(db, "IDMAP_VERSION"); |