summaryrefslogtreecommitdiff
path: root/src/responder/nss/nsssrv_cmd.c
diff options
context:
space:
mode:
authorJan Zeleny <jzeleny@redhat.com>2012-03-14 06:09:03 -0400
committerStephen Gallagher <sgallagh@redhat.com>2012-04-24 09:19:43 -0400
commit29be7d76c949b82350c7603cfd362a1fcb47eb1b (patch)
treea71b128f43a3a6c3ba6f62ca374710d2b2dde8fb /src/responder/nss/nsssrv_cmd.c
parent8ccb0de226ccb9330f5a6865de487d6f0313902d (diff)
downloadsssd-29be7d76c949b82350c7603cfd362a1fcb47eb1b.tar.gz
sssd-29be7d76c949b82350c7603cfd362a1fcb47eb1b.tar.bz2
sssd-29be7d76c949b82350c7603cfd362a1fcb47eb1b.zip
Moved expand_homedir_template() from NSS responder to utility code
Diffstat (limited to 'src/responder/nss/nsssrv_cmd.c')
-rw-r--r--src/responder/nss/nsssrv_cmd.c109
1 files changed, 1 insertions, 108 deletions
diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c
index da3fa6fd..1c94ff78 100644
--- a/src/responder/nss/nsssrv_cmd.c
+++ b/src/responder/nss/nsssrv_cmd.c
@@ -20,6 +20,7 @@
*/
#include "util/util.h"
+#include "util/sss_nss.h"
#include "responder/nss/nsssrv.h"
#include "responder/nss/nsssrv_private.h"
#include "responder/nss/nsssrv_netgroup.h"
@@ -105,114 +106,6 @@ struct setent_ctx {
/****************************************************************************
* PASSWD db related functions
***************************************************************************/
-char *expand_homedir_template(TALLOC_CTX *mem_ctx, const char *template,
- const char *username, uint32_t uid,
- const char *domain)
-{
- char *copy;
- char *p;
- char *n;
- char *result = NULL;
- char *res = NULL;
- TALLOC_CTX *tmp_ctx = NULL;
-
- if (template == NULL) {
- DEBUG(1, ("Missing template.\n"));
- return NULL;
- }
-
- tmp_ctx = talloc_new(NULL);
- if (!tmp_ctx) return NULL;
-
- copy = talloc_strdup(tmp_ctx, template);
- if (copy == NULL) {
- DEBUG(1, ("talloc_strdup failed.\n"));
- goto done;
- }
-
- result = talloc_strdup(tmp_ctx, "");
- if (result == NULL) {
- DEBUG(1, ("talloc_strdup failed.\n"));
- goto done;
- }
-
- p = copy;
- while ( (n = strchr(p, '%')) != NULL) {
- *n = '\0';
- n++;
- if ( *n == '\0' ) {
- DEBUG(1, ("format error, single %% at the end of the template.\n"));
- goto done;
- }
- switch( *n ) {
- case 'u':
- if (username == NULL) {
- DEBUG(1, ("Cannot expand user name template "
- "because user name is empty.\n"));
- goto done;
- }
- result = talloc_asprintf_append(result, "%s%s", p,
- username);
- break;
-
- case 'U':
- if (uid == 0) {
- DEBUG(1, ("Cannot expand uid template "
- "because uid is invalid.\n"));
- goto done;
- }
- result = talloc_asprintf_append(result, "%s%d", p,
- uid);
- break;
-
- case 'd':
- if (domain == NULL) {
- DEBUG(1, ("Cannot expand domain name template "
- "because domain name is empty.\n"));
- goto done;
- }
- result = talloc_asprintf_append(result, "%s%s", p,
- domain);
- break;
-
- case 'f':
- if (domain == NULL || username == NULL) {
- DEBUG(1, ("Cannot expand fully qualified name template "
- "because domain or user name is empty.\n"));
- goto done;
- }
- result = talloc_asprintf_append(result, "%s%s@%s", p,
- username, domain);
- break;
-
- case '%':
- result = talloc_asprintf_append(result, "%s%%", p);
- break;
-
- default:
- DEBUG(1, ("format error, unknown template [%%%c].\n", *n));
- goto done;
- }
-
- if (result == NULL) {
- DEBUG(1, ("talloc_asprintf_append failed.\n"));
- goto done;
- }
-
- p = n + 1;
- }
-
- result = talloc_asprintf_append(result, "%s", p);
- if (result == NULL) {
- DEBUG(1, ("talloc_asprintf_append failed.\n"));
- goto done;
- }
-
- res = talloc_move(mem_ctx, &result);
-done:
- talloc_zfree(tmp_ctx);
- return res;
-}
static gid_t get_gid_override(struct ldb_message *msg,
struct sss_domain_info *dom)