sysquota: we need to list nfs4 as a separate fs name for the sys_get_nfs_quota backend
[kai/samba.git] / source3 / lib / username.c
index 925b44bb06c96b28140ba0acb45092d50d2d6617..665fbb42536c1038a15321d621fa23b311bbdd7e 100644 (file)
@@ -42,7 +42,7 @@ static struct passwd *getpwnam_alloc_cached(TALLOC_CTX *mem_ctx, const char *nam
                return tcopy_passwd(mem_ctx, pw);
        }
 
-       pw = sys_getpwnam(name);
+       pw = getpwnam(name);
        if (pw == NULL) {
                return NULL;
        }
@@ -92,7 +92,7 @@ char *get_user_home_dir(TALLOC_CTX *mem_ctx, const char *user)
 }
 
 /****************************************************************************
- * A wrapper for sys_getpwnam().  The following variations are tried:
+ * A wrapper for getpwnam().  The following variations are tried:
  *   - as transmitted
  *   - in all lower case if this differs from transmitted
  *   - in all upper case if this differs from transmitted
@@ -112,7 +112,11 @@ static struct passwd *Get_Pwnam_internals(TALLOC_CTX *mem_ctx,
 
        /* Try in all lower case first as this is the most 
           common case on UNIX systems */
-       strlower_m(user2);
+       if (!strlower_m(user2)) {
+               DEBUG(5,("strlower_m %s failed\n", user2));
+               goto done;
+       }
+
        DEBUG(5,("Trying _Get_Pwnam(), username as lowercase is %s\n",user2));
        ret = getpwnam_alloc_cached(mem_ctx, user2);
        if(ret)
@@ -128,7 +132,10 @@ static struct passwd *Get_Pwnam_internals(TALLOC_CTX *mem_ctx,
        }
 
        /* Try as uppercase, if username wasn't originally uppercase */
-       strupper_m(user2);
+       if (!strupper_m(user2)) {
+               goto done;
+       }
+
        if(strcmp(user, user2) != 0) {
                DEBUG(5,("Trying _Get_Pwnam(), username as uppercase is %s\n",
                         user2));
@@ -138,7 +145,10 @@ static struct passwd *Get_Pwnam_internals(TALLOC_CTX *mem_ctx,
        }
 
        /* Try all combinations up to usernamelevel */
-       strlower_m(user2);
+       if (!strlower_m(user2)) {
+               DEBUG(5,("strlower_m %s failed\n", user2));
+               goto done;
+       }
        DEBUG(5,("Checking combinations of %d uppercase letters in %s\n",
                 lp_usernamelevel(), user2));
        ret = uname_string_combinations(user2, mem_ctx, getpwnam_alloc_cached,