readgroup: Don't use results if error occurs
authorSimon Wilkinson <sxw@your-file-system.com>
Thu, 28 Feb 2013 10:20:22 +0000 (10:20 +0000)
committerJeffrey Altman <jaltman@your-file-system.com>
Fri, 1 Mar 2013 00:12:01 +0000 (16:12 -0800)
If pr_ListMembers returns an error, don't try and use the results
it provides, as they could be garbage.

Caught by coverity (#92119)

Change-Id: Idcfb464953dcdec68cba988d3fb1ab6ddad08340
Reviewed-on: http://gerrit.openafs.org/9308
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>

src/ptserver/readgroup.c

index 183e05b..8dd0f73 100644 (file)
@@ -156,14 +156,15 @@ main(int argc, char **argv)
                                    name, gname);
                            fprintf(stderr, "%s (%d).\n", pr_ErrorMsg(code),
                                    code);
+                       } else {
+                           for (i = 0; i < lnames.namelist_len; i++) {
+                               code =
+                                   pr_AddToGroup(lnames.namelist_val[i], gname);
+                               report_error(code, lnames.namelist_val[i], gname);
+                           }
+                           if (lnames.namelist_val)
+                               free(lnames.namelist_val);
                        }
-                       for (i = 0; i < lnames.namelist_len; i++) {
-                           code =
-                               pr_AddToGroup(lnames.namelist_val[i], gname);
-                           report_error(code, lnames.namelist_val[i], gname);
-                       }
-                       if (lnames.namelist_val)
-                           free(lnames.namelist_val);
                    }
                    memset(name, 0, PR_MAXNAMELEN);
                    skip(&tmp);
@@ -191,16 +192,17 @@ main(int argc, char **argv)
                                name, gname);
                        fprintf(stderr, "%s (%d).\n", pr_ErrorMsg(code),
                                code);
+                   } else {
+                       for (i = 0; i < lnames.namelist_len; i++) {
+                           if (verbose)
+                               printf("Adding %s to %s.\n",
+                                      lnames.namelist_val[i], gname);
+                           code = pr_AddToGroup(lnames.namelist_val[i], gname);
+                           report_error(code, lnames.namelist_val[i], gname);
+                       }
+                       if (lnames.namelist_val)
+                           free(lnames.namelist_val);
                    }
-                   for (i = 0; i < lnames.namelist_len; i++) {
-                       if (verbose)
-                           printf("Adding %s to %s.\n",
-                                  lnames.namelist_val[i], gname);
-                       code = pr_AddToGroup(lnames.namelist_val[i], gname);
-                       report_error(code, lnames.namelist_val[i], gname);
-                   }
-                   if (lnames.namelist_val)
-                       free(lnames.namelist_val);
                }
                memset(name, 0, PR_MAXNAMELEN);
                skip(&tmp);