r21984: make use of tdb_*_bystring() and string_term_tdb_data()
authorStefan Metzmacher <metze@samba.org>
Tue, 27 Mar 2007 10:50:32 +0000 (10:50 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:18:56 +0000 (12:18 -0500)
to avoid creating the TDB_DATA struct from strings "by hand"

metze
(This used to be commit 91301f73476f17cc582c12e1fc201eb571d007af)

source3/nsswitch/idmap_cache.c

index 13cb9f7eb9728a5ce41b9d00156639247b7e5c58..cc42ef098e9b715e91d1f8af89908168ae55e4e3 100644 (file)
@@ -104,7 +104,7 @@ NTSTATUS idmap_cache_set(struct idmap_cache_ctx *cache, const struct id_map *id)
 {
        NTSTATUS ret;
        time_t timeout = time(NULL) + lp_idmap_cache_time();
-       TDB_DATA keybuf, databuf;
+       TDB_DATA databuf;
        char *sidkey;
        char *idkey;
        char *valstr;
@@ -128,16 +128,13 @@ NTSTATUS idmap_cache_set(struct idmap_cache_ctx *cache, const struct id_map *id)
                goto done;
        }
 
-       keybuf.dptr = sidkey;
-       keybuf.dsize = strlen(sidkey)+1;
-       databuf.dptr = valstr;
-       databuf.dsize = strlen(valstr)+1;
+       databuf = string_term_tdb_data(valstr);
        DEBUG(10, ("Adding cache entry with key = %s; value = %s and timeout ="
-                  " %s (%d seconds %s)\n", keybuf.dptr, valstr , ctime(&timeout),
+                  " %s (%d seconds %s)\n", sidkey, valstr , ctime(&timeout),
                   (int)(timeout - time(NULL)), 
                   timeout > time(NULL) ? "ahead" : "in the past"));
 
-       if (tdb_store(cache->tdb, keybuf, databuf, TDB_REPLACE) != 0) {
+       if (tdb_store_bystring(cache->tdb, sidkey, databuf, TDB_REPLACE) != 0) {
                DEBUG(3, ("Failed to store cache entry!\n"));
                ret = NT_STATUS_UNSUCCESSFUL;
                goto done;
@@ -153,16 +150,13 @@ NTSTATUS idmap_cache_set(struct idmap_cache_ctx *cache, const struct id_map *id)
                goto done;
        }
 
-       keybuf.dptr = idkey;
-       keybuf.dsize = strlen(idkey)+1;
-       databuf.dptr = valstr;
-       databuf.dsize = strlen(valstr)+1;
+       databuf = string_term_tdb_data(valstr);
        DEBUG(10, ("Adding cache entry with key = %s; value = %s and timeout ="
-                  " %s (%d seconds %s)\n", keybuf.dptr, valstr, ctime(&timeout),
+                  " %s (%d seconds %s)\n", idkey, valstr, ctime(&timeout),
                   (int)(timeout - time(NULL)), 
                   timeout > time(NULL) ? "ahead" : "in the past"));
 
-       if (tdb_store(cache->tdb, keybuf, databuf, TDB_REPLACE) != 0) {
+       if (tdb_store_bystring(cache->tdb, idkey, databuf, TDB_REPLACE) != 0) {
                DEBUG(3, ("Failed to store cache entry!\n"));
                ret = NT_STATUS_UNSUCCESSFUL;
                goto done;
@@ -178,7 +172,6 @@ done:
 NTSTATUS idmap_cache_del(struct idmap_cache_ctx *cache, const struct id_map *id)
 {
        NTSTATUS ret;
-       TDB_DATA keybuf;
        char *sidkey = NULL;
        char *idkey = NULL;
 
@@ -192,21 +185,17 @@ NTSTATUS idmap_cache_del(struct idmap_cache_ctx *cache, const struct id_map *id)
 
        /* delete SID */
 
-       keybuf.dptr = sidkey;
-       keybuf.dsize = strlen(sidkey)+1;
-       DEBUG(10, ("Deleting cache entry (key = %s)\n", keybuf.dptr));
+       DEBUG(10, ("Deleting cache entry (key = %s)\n", sidkey));
 
-       if (tdb_delete(cache->tdb, keybuf) != 0) {
+       if (tdb_delete_bystring(cache->tdb, sidkey) != 0) {
                DEBUG(3, ("Failed to delete cache entry!\n"));
        }
 
        /* delete ID */
 
-       keybuf.dptr = idkey;
-       keybuf.dsize = strlen(idkey)+1;
-       DEBUG(10, ("Deleting cache entry (key = %s)\n", keybuf.dptr));
+       DEBUG(10, ("Deleting cache entry (key = %s)\n", idkey));
 
-       if (tdb_delete(cache->tdb, keybuf) != 0) {
+       if (tdb_delete_bystring(cache->tdb, idkey) != 0) {
                DEBUG(3, ("Failed to delete cache entry!\n"));
        }
 
@@ -220,7 +209,7 @@ NTSTATUS idmap_cache_set_negative_sid(struct idmap_cache_ctx *cache, const struc
 {
        NTSTATUS ret;
        time_t timeout = time(NULL) + lp_idmap_negative_cache_time();
-       TDB_DATA keybuf, databuf;
+       TDB_DATA databuf;
        char *sidkey;
        char *valstr;
 
@@ -235,16 +224,13 @@ NTSTATUS idmap_cache_set_negative_sid(struct idmap_cache_ctx *cache, const struc
                goto done;
        }
 
-       keybuf.dptr = sidkey;
-       keybuf.dsize = strlen(sidkey)+1;
-       databuf.dptr = valstr;
-       databuf.dsize = strlen(valstr)+1;
+       databuf = string_term_tdb_data(valstr);
        DEBUG(10, ("Adding cache entry with key = %s; value = %s and timeout ="
-                  " %s (%d seconds %s)\n", keybuf.dptr, valstr, ctime(&timeout),
+                  " %s (%d seconds %s)\n", sidkey, valstr, ctime(&timeout),
                   (int)(timeout - time(NULL)), 
                   timeout > time(NULL) ? "ahead" : "in the past"));
 
-       if (tdb_store(cache->tdb, keybuf, databuf, TDB_REPLACE) != 0) {
+       if (tdb_store_bystring(cache->tdb, sidkey, databuf, TDB_REPLACE) != 0) {
                DEBUG(3, ("Failed to store cache entry!\n"));
                ret = NT_STATUS_UNSUCCESSFUL;
                goto done;
@@ -259,7 +245,7 @@ NTSTATUS idmap_cache_set_negative_id(struct idmap_cache_ctx *cache, const struct
 {
        NTSTATUS ret;
        time_t timeout = time(NULL) + lp_idmap_negative_cache_time();
-       TDB_DATA keybuf, databuf;
+       TDB_DATA databuf;
        char *idkey;
        char *valstr;
 
@@ -274,16 +260,13 @@ NTSTATUS idmap_cache_set_negative_id(struct idmap_cache_ctx *cache, const struct
                goto done;
        }
 
-       keybuf.dptr = idkey;
-       keybuf.dsize = strlen(idkey)+1;
-       databuf.dptr = valstr;
-       databuf.dsize = strlen(valstr)+1;
+       databuf = string_term_tdb_data(valstr);
        DEBUG(10, ("Adding cache entry with key = %s; value = %s and timeout ="
-                  " %s (%d seconds %s)\n", keybuf.dptr, valstr, ctime(&timeout),
+                  " %s (%d seconds %s)\n", idkey, valstr, ctime(&timeout),
                   (int)(timeout - time(NULL)), 
                   timeout > time(NULL) ? "ahead" : "in the past"));
 
-       if (tdb_store(cache->tdb, keybuf, databuf, TDB_REPLACE) != 0) {
+       if (tdb_store_bystring(cache->tdb, idkey, databuf, TDB_REPLACE) != 0) {
                DEBUG(3, ("Failed to store cache entry!\n"));
                ret = NT_STATUS_UNSUCCESSFUL;
                goto done;
@@ -369,7 +352,7 @@ BOOL idmap_cache_is_negative(const char *val)
 NTSTATUS idmap_cache_map_sid(struct idmap_cache_ctx *cache, struct id_map *id)
 {
        NTSTATUS ret;
-       TDB_DATA keybuf, databuf;
+       TDB_DATA databuf;
        time_t t;
        char *sidkey;
        char *endptr;
@@ -380,10 +363,7 @@ NTSTATUS idmap_cache_map_sid(struct idmap_cache_ctx *cache, struct id_map *id)
        ret = idmap_cache_build_sidkey(cache, &sidkey, id);
        if (!NT_STATUS_IS_OK(ret)) return ret;
 
-       keybuf.dptr = sidkey;
-       keybuf.dsize = strlen(sidkey)+1;
-
-       databuf = tdb_fetch(cache->tdb, keybuf);
+       databuf = tdb_fetch_bystring(cache->tdb, sidkey);
 
        if (databuf.dptr == NULL) {
                DEBUG(10, ("Cache entry with key = %s couldn't be found\n", sidkey));
@@ -395,7 +375,7 @@ NTSTATUS idmap_cache_map_sid(struct idmap_cache_ctx *cache, struct id_map *id)
        if ((endptr == NULL) || (*endptr != '/')) {
                DEBUG(2, ("Invalid gencache data format: %s\n", databuf.dptr));
                /* remove the entry */
-               tdb_delete(cache->tdb, keybuf);
+               tdb_delete_bystring(cache->tdb, sidkey);
                ret = NT_STATUS_NONE_MAPPED;
                goto done;
        }
@@ -411,7 +391,7 @@ NTSTATUS idmap_cache_map_sid(struct idmap_cache_ctx *cache, struct id_map *id)
                ret = idmap_cache_fill_map(id, endptr+1);
                if ( ! NT_STATUS_IS_OK(ret)) {
                        /* if not valid form delete the entry */
-                       tdb_delete(cache->tdb, keybuf);
+                       tdb_delete_bystring(cache->tdb, sidkey);
                        ret = NT_STATUS_NONE_MAPPED;
                        goto done;
                }
@@ -444,7 +424,7 @@ NTSTATUS idmap_cache_map_sid(struct idmap_cache_ctx *cache, struct id_map *id)
                        } else {                                
                                /* We're expired, delete the entry and return
                                   not mapped */
-                               tdb_delete(cache->tdb, keybuf);
+                               tdb_delete_bystring(cache->tdb, sidkey);
                                ret = NT_STATUS_NONE_MAPPED;
                        }                       
                } else {
@@ -479,7 +459,7 @@ done:
 NTSTATUS idmap_cache_map_id(struct idmap_cache_ctx *cache, struct id_map *id)
 {
        NTSTATUS ret;
-       TDB_DATA keybuf, databuf;
+       TDB_DATA databuf;
        time_t t;
        char *idkey;
        char *endptr;
@@ -490,10 +470,7 @@ NTSTATUS idmap_cache_map_id(struct idmap_cache_ctx *cache, struct id_map *id)
        ret = idmap_cache_build_idkey(cache, &idkey, id);
        if (!NT_STATUS_IS_OK(ret)) return ret;
 
-       keybuf.dptr = idkey;
-       keybuf.dsize = strlen(idkey)+1;
-
-       databuf = tdb_fetch(cache->tdb, keybuf);
+       databuf = tdb_fetch_bystring(cache->tdb, idkey);
 
        if (databuf.dptr == NULL) {
                DEBUG(10, ("Cache entry with key = %s couldn't be found\n", idkey));
@@ -505,7 +482,7 @@ NTSTATUS idmap_cache_map_id(struct idmap_cache_ctx *cache, struct id_map *id)
        if ((endptr == NULL) || (*endptr != '/')) {
                DEBUG(2, ("Invalid gencache data format: %s\n", databuf.dptr));
                /* remove the entry */
-               tdb_delete(cache->tdb, keybuf);
+               tdb_delete_bystring(cache->tdb, idkey);
                ret = NT_STATUS_NONE_MAPPED;
                goto done;
        }
@@ -521,7 +498,7 @@ NTSTATUS idmap_cache_map_id(struct idmap_cache_ctx *cache, struct id_map *id)
                ret = idmap_cache_fill_map(id, endptr+1);
                if ( ! NT_STATUS_IS_OK(ret)) {
                        /* if not valid form delete the entry */
-                       tdb_delete(cache->tdb, keybuf);
+                       tdb_delete_bystring(cache->tdb, idkey);
                        ret = NT_STATUS_NONE_MAPPED;
                        goto done;
                }
@@ -554,7 +531,7 @@ NTSTATUS idmap_cache_map_id(struct idmap_cache_ctx *cache, struct id_map *id)
                        } else {
                                /* We're expired, delete the entry and
                                   return not mapped */
-                               tdb_delete(cache->tdb, keybuf);
+                               tdb_delete_bystring(cache->tdb, idkey);
                                ret = NT_STATUS_NONE_MAPPED;
                        }                       
                } else {