int server_id_db_add(struct server_id_db *db, const char *name)
{
struct tdb_context *tdb = db->tdb->tdb;
- struct server_id_buf buf;
- TDB_DATA key, data;
+ TDB_DATA key;
char *n;
int ret;
key = string_term_tdb_data(name);
- server_id_str_buf(db->pid, &buf);
- data = string_term_tdb_data(buf.buf);
+ {
+ size_t idlen = server_id_str_buf_unique(db->pid, NULL, 0);
+ char idbuf[idlen];
+
+ server_id_str_buf_unique(db->pid, idbuf, idlen);
+
+ ret = tdb_append(
+ tdb, key,
+ (TDB_DATA) { .dptr = (uint8_t *)idbuf, .dsize = idlen });
+ }
- ret = tdb_append(tdb, key, data);
if (ret != 0) {
enum TDB_ERROR err = tdb_error(tdb);
strv_delete(&db->names, strv_find(db->names, name));
struct server_id server)
{
struct tdb_context *tdb = db->tdb->tdb;
- struct server_id_buf buf;
+ size_t idbuf_len = server_id_str_buf_unique(server, NULL, 0);
+ char idbuf[idbuf_len];
TDB_DATA key;
uint8_t *data;
char *ids, *id;
int ret;
key = string_term_tdb_data(name);
- server_id_str_buf(server, &buf);
+ server_id_str_buf_unique(server, idbuf, idbuf_len);
ret = tdb_chainlock(tdb, key);
if (ret == -1) {
ids = (char *)data;
- id = strv_find(ids, buf.buf);
+ id = strv_find(ids, idbuf);
if (id == NULL) {
tdb_chainunlock(tdb, key);
TALLOC_FREE(data);