X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=gclient.c;h=73f64b3b87f1fde00317dcd65e0aa9884a07d02f;hb=afb34fb175d1a2de35120807feb6f5af403c581a;hp=c59bcfe2f6f3c501bfedb0fa0de3140490f7b25f;hpb=d04ed5d3764df8ef793478f17a424613aa506a39;p=fio.git diff --git a/gclient.c b/gclient.c index c59bcfe2..73f64b3b 100644 --- a/gclient.c +++ b/gclient.c @@ -553,12 +553,15 @@ static void gfio_quit_op(struct fio_client *client, struct fio_net_cmd *cmd) } static struct thread_options *gfio_client_add_job(struct gfio_client *gc, - struct thread_options_pack *top) + struct thread_options_pack *top, size_t top_sz) { struct gfio_client_options *gco; gco = calloc(1, sizeof(*gco)); - convert_thread_options_to_cpu(&gco->o, top); + if (convert_thread_options_to_cpu(&gco->o, top, top_sz)) { + dprint(FD_NET, "client: failed parsing add_job command\n"); + return NULL; + } INIT_FLIST_HEAD(&gco->list); flist_add_tail(&gco->list, &gc->o_list); gc->o_list_nr = 1; @@ -577,7 +580,10 @@ static void gfio_add_job_op(struct fio_client *client, struct fio_net_cmd *cmd) p->thread_number = le32_to_cpu(p->thread_number); p->groupid = le32_to_cpu(p->groupid); - o = gfio_client_add_job(gc, &p->top); + o = gfio_client_add_job(gc, &p->top, + cmd->pdu_len - offsetof(struct cmd_add_job_pdu, top)); + if (o == NULL) + return; gdk_threads_enter();