summaryrefslogtreecommitdiff
path: root/src/responder/nss
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2013-05-10 18:19:12 +0200
committerJakub Hrozek <jhrozek@redhat.com>2013-05-30 13:44:35 +0200
commit1987bff88e01c74d647dd2db4f541ac311537e1a (patch)
tree5b74ee7f10bc033009a1822b69010b64b249c718 /src/responder/nss
parentb36153ce4c3eeb19274ce32e82949da446184406 (diff)
downloadsssd-1987bff88e01c74d647dd2db4f541ac311537e1a.tar.gz
sssd-1987bff88e01c74d647dd2db4f541ac311537e1a.tar.bz2
sssd-1987bff88e01c74d647dd2db4f541ac311537e1a.zip
Add utility functions for formatting fully-qualified names
Instead of using printf-like functions directly, provide two wrappers that would encapsulate formatting the fully-qualified names. No functional change is present in this patch.
Diffstat (limited to 'src/responder/nss')
-rw-r--r--src/responder/nss/nsssrv_cmd.c49
1 files changed, 19 insertions, 30 deletions
diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c
index 57b5786f..268cfc83 100644
--- a/src/responder/nss/nsssrv_cmd.c
+++ b/src/responder/nss/nsssrv_cmd.c
@@ -303,13 +303,10 @@ static int fill_pwent(struct sss_packet *packet,
int i, ret, num, t;
bool add_domain = (!IS_SUBDOMAIN(dom) && dom->fqnames);
const char *domain = dom->name;
- const char *namefmt;
bool packet_initialized = false;
int ncret;
TALLOC_CTX *tmp_ctx = NULL;
- namefmt = dom->names->fq_fmt;
-
if (add_domain) dom_len = strlen(domain);
to_sized_string(&pwfield, nctx->pwfield);
@@ -394,9 +391,8 @@ static int fill_pwent(struct sss_packet *packet,
SAFEALIGN_SET_UINT32(&body[rp], gid, &rp);
if (add_domain) {
- ret = snprintf((char *)&body[rp],
- name.len + delim + dom_len,
- namefmt, name.str, domain);
+ ret = sss_fqname((char *) &body[rp], name.len + delim + dom_len,
+ dom->names, dom, name.str);
if (ret >= (name.len + delim + dom_len)) {
/* need more space, got creative with the print format ? */
t = ret - (name.len + delim + dom_len) + 1;
@@ -409,9 +405,8 @@ static int fill_pwent(struct sss_packet *packet,
sss_packet_get_body(packet, &body, &blen);
/* retry */
- ret = snprintf((char *)&body[rp],
- name.len + delim + dom_len,
- namefmt, name.str, domain);
+ ret = sss_fqname((char *) &body[rp], name.len + delim + dom_len,
+ dom->names, dom, name.str);
}
if (ret != name.len + delim + dom_len - 1) {
@@ -665,7 +660,7 @@ static int delete_entry_from_memcache(struct sss_domain_info *dom, char *name,
}
if (dom->fqnames) {
- fqdn = talloc_asprintf(tmp_ctx, dom->names->fq_fmt, name, dom->name);
+ fqdn = sss_tc_fqname(tmp_ctx, dom->names, dom, name);
if (fqdn == NULL) {
DEBUG(SSSDBG_CRIT_FAILURE, ("Out of memory.\n"));
ret = ENOMEM;
@@ -2153,7 +2148,6 @@ static int fill_members(struct sss_packet *packet,
size_t rsize = *_rsize;
char *tmpstr;
struct sized_string name;
- const char *namefmt = dom->names->fq_fmt;
TALLOC_CTX *tmp_ctx = NULL;
size_t delim;
@@ -2214,9 +2208,9 @@ static int fill_members(struct sss_packet *packet,
sss_packet_get_body(packet, &body, &blen);
if (add_domain) {
- ret = snprintf((char *)&body[rzero + rsize],
- name.len + delim + dom_len,
- namefmt, name.str, domain);
+ ret = sss_fqname((char *)&body[rzero + rsize],
+ name.len + delim + dom_len,
+ dom->names, dom, name.str);
if (ret >= (name.len + delim + dom_len)) {
/* need more space,
* got creative with the print format ? */
@@ -2229,9 +2223,9 @@ static int fill_members(struct sss_packet *packet,
delim += t;
/* retry */
- ret = snprintf((char *)&body[rzero + rsize],
- name.len + delim + dom_len,
- namefmt, name.str, domain);
+ ret = sss_fqname((char *)&body[rzero + rsize],
+ name.len + delim + dom_len,
+ dom->names, dom, name.str);
}
if (ret != name.len + delim + dom_len - 1) {
@@ -2294,11 +2288,8 @@ static int fill_grent(struct sss_packet *packet,
size_t rzero, rsize;
bool add_domain = (!IS_SUBDOMAIN(dom) && dom->fqnames);
const char *domain = dom->name;
- const char *namefmt;
TALLOC_CTX *tmp_ctx = NULL;
- namefmt = dom->names->fq_fmt;
-
if (add_domain) {
delim = 1;
dom_len = strlen(domain);
@@ -2384,9 +2375,9 @@ static int fill_grent(struct sss_packet *packet,
/* 8-X: sequence of strings (name, passwd, mem..) */
if (add_domain) {
- ret = snprintf((char *)&body[rzero+STRS_ROFFSET],
- name.len + delim + dom_len,
- namefmt, name.str, domain);
+ ret = sss_fqname((char *)&body[rzero+STRS_ROFFSET],
+ name.len + delim + dom_len,
+ dom->names, dom, name.str);
if (ret >= (name.len + delim + dom_len)) {
/* need more space, got creative with the print format ? */
int t = ret - (name.len + delim + dom_len) + 1;
@@ -2400,9 +2391,9 @@ static int fill_grent(struct sss_packet *packet,
delim += t;
/* retry */
- ret = snprintf((char *)&body[rzero+STRS_ROFFSET],
- name.len + delim + dom_len,
- namefmt, name.str, domain);
+ ret = sss_fqname((char *)&body[rzero+STRS_ROFFSET],
+ name.len + delim + dom_len,
+ dom->names, dom, name.str);
}
if (ret != name.len + delim + dom_len - 1) {
@@ -3675,8 +3666,7 @@ static errno_t nss_cmd_getsidby_search(struct nss_dom_ctx *dctx)
/* For subdomains a fully qualified name is needed for
* sysdb_search_user_by_name and sysdb_search_group_by_name. */
if (IS_SUBDOMAIN(dom)) {
- sysdb_name = talloc_asprintf(cmdctx, dom->names->fq_fmt,
- name, dom->name);
+ sysdb_name = sss_tc_fqname(cmdctx, dom->names, dom, name);
if (sysdb_name == NULL) {
DEBUG(SSSDBG_OP_FAILURE, ("talloc_asprintf failed.\n"));
return ENOMEM;
@@ -4045,8 +4035,7 @@ static errno_t fill_name(struct sss_packet *packet,
}
if (add_domain) {
- fq_name = talloc_asprintf(tmp_ctx, dom->names->fq_fmt, cased_name,
- dom->name);
+ fq_name = sss_tc_fqname(tmp_ctx, dom->names, dom, cased_name);
if (fq_name == NULL) {
DEBUG(SSSDBG_OP_FAILURE, ("talloc_asprintf failed.\n"));
ret = ENOMEM;