bool ParseJsonToGroup()

in src/oslogin_utils.cc [638:675]


bool ParseJsonToGroup(const string& json, struct group* result, BufferManager*
                      buf, int* errnop) {
  bool ret = false;
  *errnop = EINVAL;
  int gr_gid = 65535;

  json_object* group = ParseJsonRoot(json);
  if (group == NULL) {
    return false;
  }

  json_object* gid;
  if (!json_object_object_get_ex(group, "gid", &gid)) {
    goto cleanup;
  }
  json_object* name;
  if (!json_object_object_get_ex(group, "name", &name)) {
    goto cleanup;
  }

  if ((gr_gid = json_object_get_int64(gid)) == 0) {
    goto cleanup;
  }

  result->gr_gid = gr_gid;
  if (!buf->AppendString("", &result->gr_passwd, errnop))
    goto cleanup;
  if (!buf->AppendString(json_object_get_string(name), &result->gr_name,
                         errnop))
    goto cleanup;

  *errnop = 0;
  ret = true;

cleanup:
  json_object_put(group);
  return ret;
}