summaryrefslogtreecommitdiff
path: root/src/providers
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2013-08-23 14:08:33 +0200
committerJakub Hrozek <jhrozek@redhat.com>2013-09-03 13:54:07 +0200
commit01d048293cba60cf45ca2791585a7d6dc3bf57b2 (patch)
tree18d488366a17a8e592733dfe78064106f04fbdee /src/providers
parent3275c56e7b5dd36d25e0a971bf90c70179f0ab8f (diff)
downloadsssd-01d048293cba60cf45ca2791585a7d6dc3bf57b2.tar.gz
sssd-01d048293cba60cf45ca2791585a7d6dc3bf57b2.tar.bz2
sssd-01d048293cba60cf45ca2791585a7d6dc3bf57b2.zip
PROXY: Handle empty GECOS
If the user's GECOS as returned by the proxied module is an empty string (as opposed to NULL), the ldb transaction would error out.
Diffstat (limited to 'src/providers')
-rw-r--r--src/providers/proxy/proxy_id.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/providers/proxy/proxy_id.c b/src/providers/proxy/proxy_id.c
index 86a11e87..b5d63ecf 100644
--- a/src/providers/proxy/proxy_id.c
+++ b/src/providers/proxy/proxy_id.c
@@ -219,6 +219,7 @@ static int save_user(struct sysdb_ctx *sysdb, struct sss_domain_info *domain,
const char *alias, uint64_t cache_timeout)
{
const char *shell;
+ const char *gecos;
char *lower;
struct sysdb_attrs *attrs = NULL;
errno_t ret;
@@ -230,6 +231,12 @@ static int save_user(struct sysdb_ctx *sysdb, struct sss_domain_info *domain,
shell = NULL;
}
+ if (pwd->pw_gecos && pwd->pw_gecos[0] != '\0') {
+ gecos = pwd->pw_gecos;
+ } else {
+ gecos = NULL;
+ }
+
if (lowercase || alias) {
attrs = sysdb_new_attrs(NULL);
if (!attrs) {
@@ -274,7 +281,7 @@ static int save_user(struct sysdb_ctx *sysdb, struct sss_domain_info *domain,
pwd->pw_passwd,
pwd->pw_uid,
pwd->pw_gid,
- pwd->pw_gecos,
+ gecos,
pwd->pw_dir,
shell,
NULL,