&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 (remoteSerializeTypedParameters(params, nparams,
&ret->params.params_val,
&ret->params.params_len,
(xdrproc_t) xdr_remote_domain_get_job_stats_ret, (char *) &ret) == -1)
goto done;
+ if (ret.params.params_len > REMOTE_DOMAIN_JOB_STATS_MAX) {
+ virReportError(VIR_ERR_RPC,
+ _("Too many job stats '%d' for limit '%d'"),
+ ret.params.params_len,
+ REMOTE_DOMAIN_JOB_STATS_MAX);
+ goto cleanup;
+ }
+
*type = ret.type;
if (remoteDeserializeTypedParameters(ret.params.params_val,
/* Upper limit on migrate parameters */
const REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX = 64;
+/* Upper limit on number of job stats */
+const REMOTE_DOMAIN_JOB_STATS_MAX = 16;
+
/* UUID. VIR_UUID_BUFLEN definition comes from libvirt.h */
typedef opaque remote_uuid[VIR_UUID_BUFLEN];
struct remote_domain_get_job_stats_ret {
int type;
- remote_typed_param params<>;
+ remote_typed_param params<REMOTE_DOMAIN_JOB_STATS_MAX>;
};