diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/lib/messages_dgm.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/source3/lib/messages_dgm.c b/source3/lib/messages_dgm.c index 1bf1805f7c..659b835e92 100644 --- a/source3/lib/messages_dgm.c +++ b/source3/lib/messages_dgm.c @@ -47,6 +47,14 @@ static void messaging_dgm_recv(struct unix_msg_ctx *ctx, uint8_t *msg, size_t msg_len, void *private_data); +static char *messaging_dgm_lockfile_name(TALLOC_CTX *mem_ctx, + const char *cache_dir, + pid_t pid) +{ + return talloc_asprintf(mem_ctx, "%s/lck/%u", cache_dir, + (unsigned)pid); +} + static int messaging_dgm_context_destructor(struct messaging_dgm_context *c); static int messaging_dgm_lockfile_create(TALLOC_CTX *tmp_ctx, @@ -69,19 +77,17 @@ static int messaging_dgm_lockfile_create(TALLOC_CTX *tmp_ctx, } ok = directory_create_or_exist_strict(dir, dir_owner, 0755); + TALLOC_FREE(dir); if (!ok) { ret = errno; DEBUG(1, ("%s: Could not create lock directory: %s\n", __func__, strerror(ret))); - TALLOC_FREE(dir); return ret; } - lockfile_name = talloc_asprintf(tmp_ctx, "%s/%u", dir, - (unsigned)pid); - TALLOC_FREE(dir); + lockfile_name = messaging_dgm_lockfile_name(tmp_ctx, cache_dir, + (unsigned)pid); if (lockfile_name == NULL) { - DEBUG(1, ("%s: talloc_asprintf failed\n", __func__)); return ENOMEM; } @@ -144,8 +150,8 @@ static int messaging_dgm_lockfile_remove(TALLOC_CTX *tmp_ctx, char *lockfile_name; int ret; - lockfile_name = talloc_asprintf( - tmp_ctx, "%s/lck/%u", cache_dir, (unsigned)pid); + lockfile_name = messaging_dgm_lockfile_name( + tmp_ctx, cache_dir, pid); if (lockfile_name == NULL) { return ENOMEM; } @@ -320,8 +326,8 @@ int messaging_dgm_cleanup(struct messaging_dgm_context *ctx, pid_t pid) int fd, ret; struct flock lck = {}; - lockfile_name = talloc_asprintf(talloc_tos(), "%s/lck/%u", - ctx->cache_dir, (unsigned)pid); + lockfile_name = messaging_dgm_lockfile_name( + talloc_tos(), ctx->cache_dir, pid); if (lockfile_name == NULL) { return ENOMEM; } |