r17780: better fix this one correctly
authorStefan Metzmacher <metze@samba.org>
Thu, 24 Aug 2006 09:47:08 +0000 (09:47 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:16:41 +0000 (14:16 -0500)
metze
(This used to be commit fbdc5c635606490618ecd54f1b49db70e680cf05)

source4/lib/samba3/idmap.c

index 4521ae72b3bc5c9eb93eef90a904d6e95b199071..334accc2aa2dab94bd5edd47796be8a979703575 100644 (file)
@@ -34,9 +34,7 @@
 #define HWM_USER   "USER HWM"
 
 /* idmap version determines auto-conversion */
-#if 0 /* unused */
 #define IDMAP_VERSION 2
-#endif
 
 /*****************************************************************************
  Initialise idmap database. 
@@ -46,6 +44,7 @@ NTSTATUS samba3_read_idmap(const char *fn, TALLOC_CTX *ctx, struct samba3_idmapd
 {
        TDB_CONTEXT *tdb;
        TDB_DATA key, val;
+       int32_t version;
 
        /* Open idmap repository */
        if (!(tdb = tdb_open(fn, 0, TDB_DEFAULT, O_RDONLY, 0644))) {
@@ -58,6 +57,13 @@ NTSTATUS samba3_read_idmap(const char *fn, TALLOC_CTX *ctx, struct samba3_idmapd
        idmap->user_hwm = tdb_fetch_int32(tdb, HWM_USER);
        idmap->group_hwm = tdb_fetch_int32(tdb, HWM_GROUP);
 
+       /* check against earlier versions */
+       version = tdb_fetch_int32(tdb, "IDMAP_VERSION");
+       if (version != IDMAP_VERSION) {
+               DEBUG(0, ("idmap_init: Unable to open idmap database, it's in an old format!\n"));
+               return NT_STATUS_INTERNAL_DB_ERROR;
+       }
+
        for (key = tdb_firstkey(tdb); key.dptr; key = tdb_nextkey(tdb, key)) 
        {
                struct samba3_idmap_mapping map;