summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2013-08-23 14:08:33 +0200
committerJakub Hrozek <jhrozek@redhat.com>2013-11-20 16:43:03 +0100
commit2608bd6c2b64dd185bf945e903b7245f00de9fd0 (patch)
tree23af2acfadf52e90004dc44c526d1dca6bdd04ae
parent6e56e7dad20985685f74e0f79de0651ec6ad58d7 (diff)
downloadsssd-2608bd6c2b64dd185bf945e903b7245f00de9fd0.tar.gz
sssd-2608bd6c2b64dd185bf945e903b7245f00de9fd0.tar.xz
sssd-2608bd6c2b64dd185bf945e903b7245f00de9fd0.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.
-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 120946b7d..048f2690e 100644
--- a/src/providers/proxy/proxy_id.c
+++ b/src/providers/proxy/proxy_id.c
@@ -215,6 +215,7 @@ static int save_user(struct sysdb_ctx *sysdb, bool lowercase,
const char *alias, uint64_t cache_timeout)
{
const char *shell;
+ const char *gecos;
char *lower;
struct sysdb_attrs *attrs = NULL;
errno_t ret;
@@ -226,6 +227,12 @@ static int save_user(struct sysdb_ctx *sysdb, bool lowercase,
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) {
@@ -270,7 +277,7 @@ static int save_user(struct sysdb_ctx *sysdb, bool lowercase,
pwd->pw_passwd,
pwd->pw_uid,
pwd->pw_gid,
- pwd->pw_gecos,
+ gecos,
pwd->pw_dir,
shell,
NULL,