virObjectLock(priv);
if (virTypedParamsSerialize(params, nparams,
+ ADMIN_SERVER_THREADPOOL_PARAMETERS_MAX,
(virTypedParameterRemotePtr *) &args.params.params_val,
&args.params.params_len,
0) < 0)
virObjectLock(priv);
if (virTypedParamsSerialize(params, nparams,
+ ADMIN_SERVER_CLIENT_LIMITS_MAX,
(virTypedParameterRemotePtr *) &args.params.params_val,
&args.params.params_len,
0) < 0)
args->flags) < 0)
goto cleanup;
- if (nparams > ADMIN_SERVER_THREADPOOL_PARAMETERS_MAX) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Number of threadpool parameters %d exceeds max "
- "allowed limit: %d"), nparams,
- ADMIN_SERVER_THREADPOOL_PARAMETERS_MAX);
- goto cleanup;
- }
-
if (virTypedParamsSerialize(params, nparams,
+ ADMIN_SERVER_THREADPOOL_PARAMETERS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len, 0) < 0)
goto cleanup;
if (adminClientGetInfo(clnt, ¶ms, &nparams, args->flags) < 0)
goto cleanup;
- if (nparams > ADMIN_CLIENT_INFO_PARAMETERS_MAX) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Number of client info parameters %d exceeds max "
- "allowed limit: %d"), nparams,
- ADMIN_CLIENT_INFO_PARAMETERS_MAX);
- goto cleanup;
- }
-
if (virTypedParamsSerialize(params, nparams,
+ ADMIN_CLIENT_INFO_PARAMETERS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len,
VIR_TYPED_PARAM_STRING_OKAY) < 0)
if (adminServerGetClientLimits(srv, ¶ms, &nparams, args->flags) < 0)
goto cleanup;
- if (nparams > ADMIN_SERVER_CLIENT_LIMITS_MAX) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Number of client processing parameters %d exceeds "
- "max allowed limit: %d"), nparams,
- ADMIN_SERVER_CLIENT_LIMITS_MAX);
- goto cleanup;
- }
-
if (virTypedParamsSerialize(params, nparams,
+ ADMIN_SERVER_CLIENT_LIMITS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len, 0) < 0)
goto cleanup;
goto error;
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_EVENT_TUNABLE_MAX,
(virTypedParameterRemotePtr *) &data.params.params_val,
&data.params.params_len,
VIR_TYPED_PARAM_STRING_OKAY) < 0) {
goto error;
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_JOB_STATS_MAX,
(virTypedParameterRemotePtr *) &data.params.params_val,
&data.params.params_len,
VIR_TYPED_PARAM_STRING_OKAY) < 0) {
goto cleanup;
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_SCHEDULER_PARAMETERS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len,
0) < 0)
goto cleanup;
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_SCHEDULER_PARAMETERS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len,
args->flags) < 0)
/* Serialize the block stats. */
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_BLOCK_STATS_PARAMETERS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len,
args->flags) < 0)
}
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_MEMORY_PARAMETERS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len,
args->flags) < 0)
}
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_NUMA_PARAMETERS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len,
flags) < 0)
}
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_BLKIO_PARAMETERS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len,
args->flags) < 0)
if (virDomainGetLaunchSecurityInfo(dom, ¶ms, &nparams, args->flags) < 0)
goto cleanup;
- if (nparams > REMOTE_DOMAIN_LAUNCH_SECURITY_INFO_PARAMS_MAX) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large"));
- goto cleanup;
- }
-
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_LAUNCH_SECURITY_INFO_PARAMS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len,
args->flags) < 0)
if (virDomainGetPerfEvents(dom, ¶ms, &nparams, args->flags) < 0)
goto cleanup;
- if (nparams > REMOTE_DOMAIN_PERF_EVENTS_MAX) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large"));
- goto cleanup;
- }
-
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_PERF_EVENTS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len,
0) < 0)
/* Serialize the block I/O tuning parameters. */
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_BLOCK_IO_TUNE_PARAMETERS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len,
args->flags) < 0)
}
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_INTERFACE_PARAMETERS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len,
flags) < 0)
goto success;
if (virTypedParamsSerialize(params, args->nparams * args->ncpus,
+ REMOTE_DOMAIN_GET_CPU_STATS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len,
args->flags) < 0)
if (virNodeGetSEVInfo(conn, ¶ms, &nparams, args->flags) < 0)
goto cleanup;
- if (nparams > REMOTE_NODE_SEV_INFO_MAX) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large"));
- goto cleanup;
- }
-
-
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_NODE_SEV_INFO_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len,
args->flags) < 0)
}
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_NODE_MEMORY_PARAMETERS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len,
args->flags) < 0)
&nparams, args->flags) < 0)
goto cleanup;
- if (nparams > REMOTE_DOMAIN_JOB_STATS_MAX) {
- virReportError(VIR_ERR_RPC,
- _("Too many job stats '%d' for limit '%d'"),
- nparams, REMOTE_DOMAIN_JOB_STATS_MAX);
- goto cleanup;
- }
-
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_JOB_STATS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len,
0) < 0)
if (virTypedParamsSerialize(retStats[i]->params,
retStats[i]->nparams,
+ REMOTE_CONNECT_GET_ALL_DOMAIN_STATS_MAX,
(virTypedParameterRemotePtr *) &dst->params.params_val,
&dst->params.params_len,
VIR_TYPED_PARAM_STRING_OKAY) < 0)
if (virNetworkPortGetParameters(port, ¶ms, &nparams, args->flags) < 0)
goto cleanup;
- if (nparams > REMOTE_NETWORK_PORT_PARAMETERS_MAX) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("nparams too large"));
- goto cleanup;
- }
-
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_NETWORK_PORT_PARAMETERS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len,
args->flags) < 0)
if (virDomainGetGuestInfo(dom, args->types, ¶ms, &nparams, args->flags) < 0)
goto cleanup;
- if (nparams > REMOTE_DOMAIN_GUEST_INFO_PARAMS_MAX) {
- virReportError(VIR_ERR_RPC,
- _("Too many params in guestinfo: %d for limit %d"),
- nparams, REMOTE_DOMAIN_GUEST_INFO_PARAMS_MAX);
- goto cleanup;
- }
-
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_GUEST_INFO_PARAMS_MAX,
(virTypedParameterRemotePtr *) &ret->params.params_val,
&ret->params.params_len,
VIR_TYPED_PARAM_STRING_OKAY) < 0)
make_nonnull_domain(&args.dom, domain);
args.flags = flags;
- if (nparams > REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX) {
- virReportError(VIR_ERR_RPC,
- _("Too many migration parameters '%d' for limit '%d'"),
- nparams, REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX);
- goto cleanup;
- }
-
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX,
(virTypedParameterRemotePtr *) &args.params.params_val,
&args.params.params_len,
VIR_TYPED_PARAM_STRING_OKAY) < 0) {
memset(&args, 0, sizeof(args));
memset(&ret, 0, sizeof(ret));
- if (nparams > REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX) {
- virReportError(VIR_ERR_RPC,
- _("Too many migration parameters '%d' for limit '%d'"),
- nparams, REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX);
- goto cleanup;
- }
-
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX,
(virTypedParameterRemotePtr *) &args.params.params_val,
&args.params.params_len,
VIR_TYPED_PARAM_STRING_OKAY) < 0) {
memset(&args, 0, sizeof(args));
memset(&ret, 0, sizeof(ret));
- if (nparams > REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX) {
- virReportError(VIR_ERR_RPC,
- _("Too many migration parameters '%d' for limit '%d'"),
- nparams, REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX);
- goto cleanup;
- }
-
args.cookie_in.cookie_in_val = (char *)cookiein;
args.cookie_in.cookie_in_len = cookieinlen;
args.flags = flags;
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX,
(virTypedParameterRemotePtr *) &args.params.params_val,
&args.params.params_len,
VIR_TYPED_PARAM_STRING_OKAY) < 0) {
memset(&args, 0, sizeof(args));
memset(&ret, 0, sizeof(ret));
- if (nparams > REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX) {
- virReportError(VIR_ERR_RPC,
- _("Too many migration parameters '%d' for limit '%d'"),
- nparams, REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX);
- goto cleanup;
- }
-
make_nonnull_domain(&args.dom, dom);
args.dconnuri = dconnuri == NULL ? NULL : (char **) &dconnuri;
args.cookie_in.cookie_in_val = (char *)cookiein;
args.flags = flags;
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX,
(virTypedParameterRemotePtr *) &args.params.params_val,
&args.params.params_len,
VIR_TYPED_PARAM_STRING_OKAY) < 0) {
memset(&args, 0, sizeof(args));
memset(&ret, 0, sizeof(ret));
- if (nparams > REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX) {
- virReportError(VIR_ERR_RPC,
- _("Too many migration parameters '%d' for limit '%d'"),
- nparams, REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX);
- goto cleanup;
- }
-
args.cookie_in.cookie_in_val = (char *)cookiein;
args.cookie_in.cookie_in_len = cookieinlen;
args.flags = flags;
args.cancelled = cancelled;
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX,
(virTypedParameterRemotePtr *) &args.params.params_val,
&args.params.params_len,
VIR_TYPED_PARAM_STRING_OKAY) < 0) {
memset(&args, 0, sizeof(args));
- if (nparams > REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX) {
- virReportError(VIR_ERR_RPC,
- _("Too many migration parameters '%d' for limit '%d'"),
- nparams, REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX);
- goto cleanup;
- }
-
make_nonnull_domain(&args.dom, domain);
args.cookie_in.cookie_in_len = cookieinlen;
args.cookie_in.cookie_in_val = (char *) cookiein;
args.cancelled = cancelled;
if (virTypedParamsSerialize(params, nparams,
+ REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX,
(virTypedParameterRemotePtr *) &args.params.params_val,
&args.params.params_len,
VIR_TYPED_PARAM_STRING_OKAY) < 0) {
splice(@args_list, int($5), 0, "&$1_len");
push(@ret_list, "if (virTypedParamsSerialize($1, $1_len,\n" .
+ " $2,\n" .
" (virTypedParameterRemotePtr *) &ret->$1.$1_val,\n" .
" &ret->$1.$1_len,\n" .
" VIR_TYPED_PARAM_STRING_OKAY) < 0)\n" .
push(@args_list, "virTypedParameterPtr $1");
push(@args_list, "int n$1");
push(@setters_list2, "if (virTypedParamsSerialize($1, n$1,\n" .
+ " $2,\n" .
" (virTypedParameterRemotePtr *) &args.$1.$1_val,\n" .
" &args.$1.$1_len,\n" .
" VIR_TYPED_PARAM_STRING_OKAY) < 0) {\n" .
* virTypedParamsSerialize:
* @params: array of parameters to be serialized and later sent to remote side
* @nparams: number of elements in @params
+ * @limit: user specified maximum limit to @remote_params_len
* @remote_params_val: protocol independent remote representation of @params
* @remote_params_len: the final number of elements in @remote_params_val
* @flags: bitwise-OR of virTypedParameterFlags
*
* This method serializes typed parameters provided by @params into
* @remote_params_val which is the representation actually being sent.
+ * It also checks, if the @limit imposed by RPC on the maximum number of
+ * parameters is not exceeded.
*
* Server side using this method also filters out any string parameters that
* must not be returned to older clients and handles possibly sparse arrays
int
virTypedParamsSerialize(virTypedParameterPtr params,
int nparams,
+ int limit,
virTypedParameterRemotePtr *remote_params_val,
unsigned int *remote_params_len,
unsigned int flags)
size_t i;
size_t j;
int rv = -1;
- virTypedParameterRemotePtr params_val;
+ virTypedParameterRemotePtr params_val = NULL;
int params_len = nparams;
+ if (nparams > limit) {
+ virReportError(VIR_ERR_RPC,
+ _("too many parameters '%d' for limit '%d'"),
+ nparams, limit);
+ goto cleanup;
+ }
+
if (VIR_ALLOC_N(params_val, nparams) < 0)
goto cleanup;
int virTypedParamsSerialize(virTypedParameterPtr params,
int nparams,
+ int limit,
virTypedParameterRemotePtr *remote_params_val,
unsigned int *remote_params_len,
unsigned int flags);