winbind_nss_aix: add incomplete attr_flag initializations
authorBjörn Jacke <bj@sernet.de>
Fri, 21 Dec 2018 14:02:40 +0000 (15:02 +0100)
committerBjoern Jacke <bj@sernet.de>
Sat, 22 Dec 2018 02:11:14 +0000 (03:11 +0100)
Found by Jürgen Starek, see https://bugzilla.samba.org/show_bug.cgi?id=5157

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Bjoern Jacke <bj@sernet.de>
nsswitch/winbind_nss_aix.c

index 6ccd386d3ad62062ede9849ee6ffb53e8d6d1ebd..343809a4b34c52685f1034b81a84dc33c7dadef9 100644 (file)
@@ -569,12 +569,12 @@ static int wb_aix_lsgroup(char *attributes[], attrval_t results[], int size)
 
 static attrval_t pwd_to_group(struct passwd *pwd)
 {
 
 static attrval_t pwd_to_group(struct passwd *pwd)
 {
-       attrval_t r;
+       attrval_t r = {
+               .attr_flag = EINVAL,
+       };
        struct group *grp = wb_aix_getgrgid(pwd->pw_gid);
 
        struct group *grp = wb_aix_getgrgid(pwd->pw_gid);
 
-       if (!grp) {
-               r.attr_flag = EINVAL;
-       } else {
+       if (grp != NULL) {
                r.attr_flag = 0;
                r.attr_un.au_char = strdup(grp->gr_name);
                free_grp(grp);
                r.attr_flag = 0;
                r.attr_un.au_char = strdup(grp->gr_name);
                free_grp(grp);
@@ -585,7 +585,9 @@ static attrval_t pwd_to_group(struct passwd *pwd)
 
 static attrval_t pwd_to_groupsids(struct passwd *pwd)
 {
 
 static attrval_t pwd_to_groupsids(struct passwd *pwd)
 {
-       attrval_t r;
+       attrval_t r = {
+               .attr_flag = EINVAL,
+       };
        char *s, *p;
        size_t mlen;
 
        char *s, *p;
        size_t mlen;
 
@@ -605,6 +607,7 @@ static attrval_t pwd_to_groupsids(struct passwd *pwd)
        replace_commas(p);
        free(s);
 
        replace_commas(p);
        free(s);
 
+       r.attr_flag = 0;
        r.attr_un.au_char = p;
 
        return r;
        r.attr_un.au_char = p;
 
        return r;
@@ -663,7 +666,9 @@ static int wb_aix_user_attrib(const char *key, char *attributes[],
        }
 
        for (i=0;i<size;i++) {
        }
 
        for (i=0;i<size;i++) {
-               results[i].attr_flag = 0;
+               results[i] = (attrval_t) {
+                       .attr_flag = 0,
+               };
 
                if (strcmp(attributes[i], S_ID) == 0) {
                        results[i].attr_un.au_int = pwd->pw_uid;
 
                if (strcmp(attributes[i], S_ID) == 0) {
                        results[i].attr_un.au_int = pwd->pw_uid;