summaryrefslogtreecommitdiffstats
path: root/src/util
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2016-07-04 17:56:37 +0200
committerJakub Hrozek <jhrozek@redhat.com>2016-07-06 19:12:08 +0200
commitd278822ab3ab18f2c5b012cd055f01f06e687e49 (patch)
tree429ba8b393d44b649beab6ac933947a0d28d9642 /src/util
parent2ca45dfa0144fea08bd360dafded57bc90111e68 (diff)
downloadsssd-d278822ab3ab18f2c5b012cd055f01f06e687e49.tar.gz
sssd-d278822ab3ab18f2c5b012cd055f01f06e687e49.tar.xz
sssd-d278822ab3ab18f2c5b012cd055f01f06e687e49.zip
utils: add sss_write_krb5_snippet_common()
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Diffstat (limited to 'src/util')
-rw-r--r--src/util/domain_info_utils.c70
1 files changed, 47 insertions, 23 deletions
diff --git a/src/util/domain_info_utils.c b/src/util/domain_info_utils.c
index 2ae31fc17..adb3f1247 100644
--- a/src/util/domain_info_utils.c
+++ b/src/util/domain_info_utils.c
@@ -527,20 +527,13 @@ done:
return ret;
}
-#define LOCALAUTH_PLUGIN_CONFIG \
-"[plugins]\n" \
-" localauth = {\n" \
-" module = sssd:"APP_MODULES_PATH"/sssd_krb5_localauth_plugin.so\n" \
-" }\n"
-
-static errno_t sss_write_krb5_localauth_snippet(const char *path)
+static errno_t sss_write_krb5_snippet_common(const char *file_name,
+ const char *content)
{
-#ifdef HAVE_KRB5_LOCALAUTH_PLUGIN
int ret;
errno_t err;
TALLOC_CTX *tmp_ctx = NULL;
char *tmp_file = NULL;
- const char *file_name;
int fd = -1;
mode_t old_mode;
ssize_t written;
@@ -552,16 +545,6 @@ static errno_t sss_write_krb5_localauth_snippet(const char *path)
return ENOMEM;
}
- file_name = talloc_asprintf(tmp_ctx, "%s/localauth_plugin", path);
- if (file_name == NULL) {
- DEBUG(SSSDBG_OP_FAILURE, "talloc_asprintf failed.\n");
- ret = ENOMEM;
- goto done;
- }
-
- DEBUG(SSSDBG_FUNC_DATA, "File for localauth plugin configuration is [%s]\n",
- file_name);
-
tmp_file = talloc_asprintf(tmp_ctx, "%sXXXXXX", file_name);
if (tmp_file == NULL) {
DEBUG(SSSDBG_OP_FAILURE, "talloc_asprintf failed.\n");
@@ -574,15 +557,14 @@ static errno_t sss_write_krb5_localauth_snippet(const char *path)
umask(old_mode);
if (fd < 0) {
DEBUG(SSSDBG_OP_FAILURE, "creating the temp file [%s] for "
- "domain-realm mappings failed.\n", tmp_file);
+ "krb5 config snippet failed.\n", tmp_file);
ret = EIO;
talloc_zfree(tmp_ctx);
goto done;
}
- size = sizeof(LOCALAUTH_PLUGIN_CONFIG) -1;
- written = sss_atomic_write_s(fd, discard_const(LOCALAUTH_PLUGIN_CONFIG),
- size);
+ size = strlen(content);
+ written = sss_atomic_write_s(fd, discard_const(content), size);
close(fd);
if (written == -1) {
ret = errno;
@@ -628,6 +610,48 @@ done:
talloc_free(tmp_ctx);
return ret;
+}
+
+#define LOCALAUTH_PLUGIN_CONFIG \
+"[plugins]\n" \
+" localauth = {\n" \
+" module = sssd:"APP_MODULES_PATH"/sssd_krb5_localauth_plugin.so\n" \
+" }\n"
+
+static errno_t sss_write_krb5_localauth_snippet(const char *path)
+{
+#ifdef HAVE_KRB5_LOCALAUTH_PLUGIN
+ int ret;
+ TALLOC_CTX *tmp_ctx = NULL;
+ const char *file_name;
+
+ tmp_ctx = talloc_new(NULL);
+ if (tmp_ctx == NULL) {
+ DEBUG(SSSDBG_OP_FAILURE, "talloc_new failed.\n");
+ return ENOMEM;
+ }
+
+ file_name = talloc_asprintf(tmp_ctx, "%s/localauth_plugin", path);
+ if (file_name == NULL) {
+ DEBUG(SSSDBG_OP_FAILURE, "talloc_asprintf failed.\n");
+ ret = ENOMEM;
+ goto done;
+ }
+
+ DEBUG(SSSDBG_FUNC_DATA, "File for localauth plugin configuration is [%s]\n",
+ file_name);
+
+ ret = sss_write_krb5_snippet_common(file_name, LOCALAUTH_PLUGIN_CONFIG);
+ if (ret != EOK) {
+ DEBUG(SSSDBG_OP_FAILURE, "sss_write_krb5_snippet_common failed.\n");
+ goto done;
+ }
+
+done:
+
+ talloc_free(tmp_ctx);
+ return ret;
+
#else
DEBUG(SSSDBG_TRACE_ALL, "Kerberos localauth plugin not available.\n");
return EOK;