Stackdb
Stackdb is a stackable, multi-target and -level source debugger and memory forensics library.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
analysis_xml.c
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2012, 2013 The University of Utah
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License as
6  * published by the Free Software Foundation; either version 2 of
7  * the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
17  */
18 
19 #include "analysis_xml.h"
20 #include "util.h"
21 
22 #include <glib.h>
23 
24 struct vmi1__AnalysisT *a_analysis_to_x_AnalysisT(struct soap *soap,
25  struct analysis *in,
26  GHashTable *reftab,
27  struct vmi1__AnalysisT *out) {
28  struct vmi1__AnalysisT *rout;
29 
30  if (out)
31  rout = out;
32  else
33  rout = calloc(1,sizeof(*rout));
34 
35  rout->aid = in->id;
36  rout->tid = in->target_id;
37  rout->analysisStatus =
39  rout->analysisResults =
41 
42  return rout;
43 }
44 
45 struct analysis_desc *
47  struct vmi1__AnalysisDescT *in,
48  GHashTable *reftab,
49  struct analysis_desc *out) {
50  struct analysis_desc *rout;
51  struct analysis_param *param;
52  int i;
53 
54  if (out)
55  rout = out;
56  else
57  rout = calloc(1,sizeof(*rout));
58 
59  rout->name = strdup(in->name);
60  if (in->description)
61  rout->description = strdup(in->description);
62  if (in->author)
63  rout->author = strdup(in->author);
64  if (in->authorContact)
65  rout->author_contact = strdup(in->authorContact);
66 
67  rout->binary = strdup(in->binary);
68 
69  if (in->requiresWrite == xsd__boolean__true_)
70  rout->requires_write = 1;
71  if (in->requiresControl == xsd__boolean__true_)
72  rout->requires_control = 1;
73  if (in->generatesAnnotations == xsd__boolean__true_)
74  rout->generates_annotations = 1;
75  if (in->reportsIntermediateResults == xsd__boolean__true_)
77  if (in->reportsFinalResults == xsd__boolean__true_)
78  rout->reports_final_results = 1;
79  if (in->supportsExternalControl == xsd__boolean__true_)
80  rout->supports_external_control = 1;
81  if (in->supportsAutoparseSimpleResults == xsd__boolean__true_)
83 
84  rout->in_params = g_hash_table_new(g_str_hash,g_str_equal);
85  rout->in_params_long = g_hash_table_new(g_str_hash,g_str_equal);
86  if (in->inParams) {
87  for (i = 0; i < in->inParams->__sizeparam; ++i) {
88  param = x_ParamT_to_a_param(soap,&(in->inParams->param[i]),NULL);
89  if (param->name)
90  g_hash_table_insert(rout->in_params,param->name,param);
91  if (param->long_name)
92  g_hash_table_insert(rout->in_params_long,param->long_name,param);
93  }
94  }
95 
96  rout->out_params = g_hash_table_new(g_str_hash,g_str_equal);
97  rout->out_params_long = g_hash_table_new(g_str_hash,g_str_equal);
98  if (in->outParams) {
99  for (i = 0; i < in->outParams->__sizeparam; ++i) {
100  param = x_ParamT_to_a_param(soap,&(in->outParams->param[i]),NULL);
101  if (param->name)
102  g_hash_table_insert(rout->out_params,param->name,param);
103  if (param->long_name)
104  g_hash_table_insert(rout->out_params_long,param->long_name,param);
105  }
106  }
107 
108  return rout;
109 }
110 
111 struct vmi1__AnalysisDescT *
113  struct analysis_desc *in,
114  GHashTable *reftab,
115  struct vmi1__AnalysisDescT *out) {
116  struct vmi1__AnalysisDescT *rout;
117  GHashTableIter iter;
118  struct analysis_param *param;
119  int i;
120 
121  if (out)
122  rout = out;
123  else
124  rout = calloc(1,sizeof(*rout));
125 
126  SOAP_STRCPY(soap,rout->name,in->name);
127  if (in->description)
128  SOAP_STRCPY(soap,rout->description,in->description);
129  if (in->author)
130  SOAP_STRCPY(soap,rout->author,in->author);
131  if (in->author_contact)
132  SOAP_STRCPY(soap,rout->authorContact,in->author_contact);
133 
134  SOAP_STRCPY(soap,rout->binary,in->binary);
135 
136  if (in->requires_write)
137  rout->requiresWrite = xsd__boolean__true_;
138  else
139  rout->requiresWrite = xsd__boolean__false_;
140  if (in->requires_control)
141  rout->requiresControl = xsd__boolean__true_;
142  else
143  rout->requiresControl = xsd__boolean__false_;
144  if (in->generates_annotations)
145  rout->generatesAnnotations = xsd__boolean__true_;
146  else
147  rout->generatesAnnotations = xsd__boolean__false_;
149  rout->reportsIntermediateResults = xsd__boolean__true_;
150  else
151  rout->reportsIntermediateResults = xsd__boolean__false_;
152  if (in->reports_final_results)
153  rout->reportsFinalResults = xsd__boolean__true_;
154  else
155  rout->reportsFinalResults = xsd__boolean__false_;
157  rout->supportsExternalControl = xsd__boolean__true_;
158  else
159  rout->supportsExternalControl = xsd__boolean__false_;
161  rout->supportsAutoparseSimpleResults = xsd__boolean__true_;
162  else
163  rout->supportsAutoparseSimpleResults = xsd__boolean__false_;
164 
165  rout->inParams = SOAP_CALLOC(soap,1,sizeof(*rout->inParams));
166  rout->inParams->__sizeparam = g_hash_table_size(in->in_params);
167  rout->inParams->param = SOAP_CALLOC(soap,rout->inParams->__sizeparam,
168  sizeof(*rout->inParams->param));
169  i = 0;
170  g_hash_table_iter_init(&iter,in->in_params);
171  while (g_hash_table_iter_next(&iter,NULL,(gpointer *)&param)) {
172  a_param_to_x_ParamT(soap,param,&(rout->inParams->param[i]));
173  ++i;
174  }
175 
176  rout->outParams = SOAP_CALLOC(soap,1,sizeof(*rout->outParams));
177  rout->outParams->__sizeparam = g_hash_table_size(in->out_params);
178  rout->outParams->param = SOAP_CALLOC(soap,rout->outParams->__sizeparam,
179  sizeof(*rout->outParams->param));
180  i = 0;
181  g_hash_table_iter_init(&iter,in->out_params);
182  while (g_hash_table_iter_next(&iter,NULL,(gpointer *)&param)) {
183  a_param_to_x_ParamT(soap,param,&(rout->outParams->param[i]));
184  ++i;
185  }
186 
187  return rout;
188 }
189 
190 struct analysis_spec *
192  struct vmi1__AnalysisSpecT *in,
193  GHashTable *reftab,
194  struct analysis_spec *out) {
195  struct analysis_spec *rout;
196  struct analysis_name_value *nv;
197  int i;
198 
199  if (out)
200  rout = out;
201  else
202  rout = calloc(1,sizeof(*rout));
203 
204  if (in->name)
205  rout->name = strdup(in->name);
206  if (in->stdinBytes) {
207  rout->stdin_bytes_len = in->stdinBytes->__size;
208  if (in->stdinBytes->__size) {
209  rout->stdin_bytes = calloc(in->stdinBytes->__size,sizeof(char));
210  memcpy(rout->stdin_bytes,in->stdinBytes->__ptr,in->stdinBytes->__size);
211  }
212  else
213  rout->stdin_bytes = NULL;
214  }
215 
216  if (in->logStdout == xsd__boolean__true_)
217  rout->log_stdout = 1;
218  else
219  rout->log_stdout = 0;
220  if (in->logStderr == xsd__boolean__true_)
221  rout->log_stderr = 1;
222  else
223  rout->log_stderr = 0;
224  if (in->reportStdoutIntermediateResults == xsd__boolean__true_)
225  rout->report_stdout_intermediate = 1;
226  else
227  rout->report_stdout_intermediate = 0;
228  if (in->reportStderrIntermediateResults == xsd__boolean__true_)
229  rout->report_stderr_intermediate = 1;
230  else
231  rout->report_stderr_intermediate = 0;
232  if (in->autoparseSimpleResults == xsd__boolean__true_)
233  rout->autoparse_simple_data = 1;
234  else
235  rout->autoparse_simple_data = 0;
236  if ((in->killOnClose && *in->killOnClose == xsd__boolean__true_)
237  || in->killOnCloseSignal) {
238  rout->kill_on_close = 1;
239  rout->kill_on_close_sig =
240  (in->killOnCloseSignal) ? *in->killOnCloseSignal : SIGKILL;
241  }
242 
243  if (in->inputParams && in->inputParams->__sizenameValue) {
244  rout->in_params = array_list_create(in->inputParams->__sizenameValue);
245  for (i = 0; i < in->inputParams->__sizenameValue; ++i) {
246  nv = calloc(1,sizeof(*nv));
247  if (in->inputParams->nameValue[i].nvName)
248  nv->name = strdup(in->inputParams->nameValue[i].nvName);
249  else
250  nv->name = strdup("");
251  if (in->inputParams->nameValue[i].nvValue)
252  nv->value = strdup(in->inputParams->nameValue[i].nvValue);
253  else
254  nv->value = strdup("");
255 
256  array_list_append(rout->in_params,nv);
257  }
258  }
259 
260  return rout;
261 }
262 struct vmi1__AnalysisSpecT *
264  struct analysis_spec *in,
265  GHashTable *reftab,
266  struct vmi1__AnalysisSpecT *out) {
267  struct vmi1__AnalysisSpecT *rout;
268  struct analysis_name_value *nv;
269  int i;
270 
271  if (out)
272  rout = out;
273  else
274  rout = calloc(1,sizeof(*rout));
275 
276  SOAP_STRCPY(soap,rout->name,in->name);
277  if (in->stdin_bytes && in->stdin_bytes_len > 0) {
278  rout->stdinBytes = SOAP_CALLOC(soap,in->stdin_bytes_len,sizeof(char));
279  memcpy(rout->stdinBytes,in->stdin_bytes,in->stdin_bytes_len);
280  }
281  if (in->log_stdout)
282  rout->logStdout = xsd__boolean__true_;
283  else
284  rout->logStdout = xsd__boolean__false_;
285  if (in->log_stderr)
286  rout->logStderr = xsd__boolean__true_;
287  else
288  rout->logStderr = xsd__boolean__false_;
290  rout->reportStdoutIntermediateResults = xsd__boolean__true_;
291  else
292  rout->reportStdoutIntermediateResults = xsd__boolean__false_;
294  rout->reportStderrIntermediateResults = xsd__boolean__true_;
295  else
296  rout->reportStderrIntermediateResults = xsd__boolean__false_;
297  if (in->autoparse_simple_data)
298  rout->autoparseSimpleResults = xsd__boolean__true_;
299  else
300  rout->autoparseSimpleResults = xsd__boolean__false_;
301  rout->killOnClose = SOAP_CALLOC(soap,1,sizeof(*rout->killOnClose));
302  if (in->kill_on_close)
303  *rout->killOnClose = xsd__boolean__true_;
304  else
305  *rout->killOnClose = xsd__boolean__false_;
306  if (in->kill_on_close) {
307  rout->killOnCloseSignal =
308  SOAP_CALLOC(soap,1,sizeof(*rout->killOnCloseSignal));
309  *rout->killOnCloseSignal = in->kill_on_close_sig;
310  }
311 
312  rout->inputParams = SOAP_CALLOC(soap,1,sizeof(*rout->inputParams));
313  if (in->in_params) {
314  rout->inputParams->__sizenameValue = array_list_len(in->in_params);
315  if (rout->inputParams->__sizenameValue > 0) {
316  rout->inputParams->nameValue =
317  SOAP_CALLOC(soap,rout->inputParams->__sizenameValue,
318  sizeof(*rout->inputParams->nameValue));
319  array_list_foreach(in->in_params,i,nv) {
320  SOAP_STRCPY(soap,rout->inputParams->nameValue[i].nvName,nv->name);
321  if (nv->value)
322  SOAP_STRCPY(soap,rout->inputParams->nameValue[i].nvValue,
323  nv->value);
324  }
325  }
326  else
327  rout->inputParams->nameValue = NULL;
328  }
329  else {
330  rout->inputParams->__sizenameValue = 0;
331  rout->inputParams->nameValue = NULL;
332  }
333 
334  return rout;
335 }
336 
337 struct vmi1__AnalysisResultT *
339  struct analysis_datum *in,
340  struct analysis *analysis,
341  GHashTable *reftab,
342  struct vmi1__AnalysisResultT *out) {
343  struct vmi1__AnalysisResultT *rout;
344  struct vmi1__SimpleResultT *rs;
345  struct vmi1__CustomResultT *rc;
346  struct analysis_datum_simple_value *dsv;
347  /* struct analysis_datum_typed_value *dtv; */
348  int i;
349 
350  if (out)
351  rout = out;
352  else
353  rout = calloc(1,sizeof(*rout));
354 
355  if (in->is_simple) {
356  rout->__union_AnalysisResultT =
357  SOAP_UNION__vmi1__union_AnalysisResultT_simpleResult;
358  rs = rout->union_AnalysisResultT.simpleResult =
359  SOAP_CALLOC(soap,1,sizeof(*rout->union_AnalysisResultT.simpleResult));
360 
361  rout->analysisId = analysis->id;
362  rs->id = in->id;
363  if (in->name) {
364  SOAP_STRCPY(soap,rs->name,in->name);
365  }
366  else
367  rs->name = "";
368  rs->type = in->type;
369  rs->time = in->time;
370  rs->tsc = in->tsc;
371  rs->counter = in->counter;
372 
373  if (in->value) {
374  SOAP_STRCPY(soap,rs->resultValue,in->value);
375  }
376  else
377  rs->resultValue = "";
378  if (in->msg)
379  SOAP_STRCPY(soap,rs->msg,in->msg);
380 
381  rs->outputValues = SOAP_CALLOC(soap,1,sizeof(*rs->outputValues));
382  rs->outputValues->__sizenameValue = array_list_len(in->values);
383  if (rs->outputValues->__sizenameValue > 0) {
384  rs->outputValues->nameValue =
385  SOAP_CALLOC(soap,rs->outputValues->__sizenameValue,
386  sizeof(*rs->outputValues->nameValue));
387  array_list_foreach(in->values,i,dsv) {
388  SOAP_STRCPY(soap,rs->outputValues->nameValue[i].nvName,dsv->name);
389  if (dsv->value) {
390  SOAP_STRCPY(soap,rs->outputValues->nameValue[i].nvValue,
391  dsv->value);
392  }
393  else
394  rs->outputValues->nameValue[i].nvValue = "";
395  }
396  }
397  }
398  else if (in->is_typed) {
399  verror("no typed datum support yet!\n");
400  return NULL;
401  }
402  else {
403  rout->__union_AnalysisResultT =
404  SOAP_UNION__vmi1__union_AnalysisResultT_customResult;
405  rc = rout->union_AnalysisResultT.customResult =
406  SOAP_CALLOC(soap,1,sizeof(*rout->union_AnalysisResultT.customResult));
407 
408  rc->id = in->id;
409  if (in->name) {
410  SOAP_STRCPY(soap,rc->name,in->name);
411  }
412  else
413  rc->name = "";
414  rc->time = in->time;
415  rc->tsc = in->tsc;
416  rc->counter = in->counter;
417 
418  if (in->value) {
419  SOAP_STRCPY(soap,rc->resultValue,in->value);
420  }
421  else
422  rc->resultValue = "";
423  if (in->msg)
424  SOAP_STRCPY(soap,rc->msg,in->msg);
425 
426  /*
427  * XXX: this is broken! Figure out how to get gsoap to handle
428  * AnyExtension better.
429  */
430  if (in->custom) {
431  rc->__size_CustomResultT = 1;
432  rc->__union_CustomResultT =
433  SOAP_CALLOC(soap,1,sizeof(*rc->__union_CustomResultT));
434  rc->__union_CustomResultT[0].__union_CustomResultT =
435  SOAP_UNION__vmi1__union_CustomResultT___any;
436  SOAP_STRCPY(soap,rc->__union_CustomResultT[0].union_CustomResultT.__any,
437  in->custom);
438  }
439  }
440 
441  return NULL;
442 }
443 
444 struct vmi1__AnalysisResultsT *
446  struct array_list *in,
447  struct analysis *analysis,
448  GHashTable *reftab,
449  struct vmi1__AnalysisResultsT *out) {
450  struct vmi1__AnalysisResultsT *rout;
451  struct analysis_datum *d;
452  int i;
453 
454  if (out)
455  rout = out;
456  else
457  rout = calloc(1,sizeof(*rout));
458 
459  rout->__sizeanalysisResult = array_list_len(in);
460  if (rout->__sizeanalysisResult > 0) {
461  rout->analysisResult = SOAP_CALLOC(soap,rout->__sizeanalysisResult,
462  sizeof(*rout->analysisResult));
463  array_list_foreach(in,i,d) {
464  a_analysis_datum_to_x_AnalysisResultT(soap,d,analysis,reftab,
465  &rout->analysisResult[i]);
466  }
467  }
468 
469  return rout;
470 }
471 
472 struct analysis_param *x_ParamT_to_a_param(struct soap *soap,
473  struct vmi1__ParamT *in,
474  struct analysis_param *out) {
475  struct analysis_param *rout;
476 
477  if (out)
478  rout = out;
479  else
480  rout = calloc(1,sizeof(*rout));
481 
482  if (in->isCommandLine && *in->isCommandLine == xsd__boolean__true_)
483  rout->is_command_line = 1;
484  if (in->isCommandLineSwitched
485  && *in->isCommandLineSwitched == xsd__boolean__true_)
486  rout->is_command_line_switched = 1;
487  if (in->name)
488  rout->name = strdup(in->name);
489  if (in->longName)
490  rout->long_name = strdup(in->longName);
491  if (in->description)
492  rout->description = strdup(in->description);
493  if (in->defaultValue)
494  rout->default_value = strdup(in->defaultValue);
495 
496  return rout;
497 }
498 
499 struct vmi1__ParamT *a_param_to_x_ParamT(struct soap *soap,
500  struct analysis_param *in,
501  struct vmi1__ParamT *out) {
502  struct vmi1__ParamT *rout;
503 
504  if (out)
505  rout = out;
506  else
507  rout = SOAP_CALLOC(soap,1,sizeof(*rout));
508 
509  rout->isCommandLine = SOAP_CALLOC(soap,1,sizeof(*rout->isCommandLine));
510  if (in->is_command_line)
511  *rout->isCommandLine = xsd__boolean__true_;
512  else
513  *rout->isCommandLine = xsd__boolean__false_;
514 
515  rout->isCommandLineSwitched =
516  SOAP_CALLOC(soap,1,sizeof(*rout->isCommandLineSwitched));
517  if (in->is_command_line_switched)
518  *rout->isCommandLineSwitched = xsd__boolean__true_;
519  else
520  *rout->isCommandLineSwitched = xsd__boolean__false_;
521 
522  if (in->name)
523  SOAP_STRCPY(soap,rout->name,in->name);
524  if (in->long_name)
525  SOAP_STRCPY(soap,rout->longName,in->long_name);
526  if (in->description)
527  SOAP_STRCPY(soap,rout->description,in->description);
528  if (in->default_value)
529  SOAP_STRCPY(soap,rout->defaultValue,in->default_value);
530 
531  return rout;
532 }
533 
534 
535 struct analysis_name_value *
537  struct vmi1__NameValueT *in,
538  struct analysis_name_value *out) {
539  struct analysis_name_value *rout;
540 
541  if (out)
542  rout = out;
543  else
544  rout = calloc(1,sizeof(*rout));
545 
546  if (in->nvName)
547  rout->name = strdup(in->nvName);
548  if (in->nvValue)
549  rout->value = strdup(in->nvValue);
550 
551  return rout;
552 }
553 
554 struct vmi1__NameValueT *
556  struct analysis_name_value *in,
557  struct vmi1__NameValueT *out) {
558  struct vmi1__NameValueT *rout;
559 
560  if (out)
561  rout = out;
562  else
563  rout = SOAP_CALLOC(soap,1,sizeof(*rout));
564 
565  if (in->name)
566  SOAP_STRCPY(soap,rout->nvName,in->name);
567  if (in->value)
568  SOAP_STRCPY(soap,rout->nvValue,in->value);
569 
570  return rout;
571 }
572 
575  enum vmi1__AnalysisStatusT status,
576  GHashTable *reftab,
577  analysis_status_t *out) {
578  analysis_status_t retval;
579 
580  switch (status) {
581  case vmi1__AnalysisStatusT__unknown:
582  retval = ASTATUS_UNKNOWN;
583  break;
584  case vmi1__AnalysisStatusT__running:
585  retval = ASTATUS_RUNNING;
586  break;
587  case vmi1__AnalysisStatusT__paused:
588  retval = ASTATUS_PAUSED;
589  break;
590  case vmi1__AnalysisStatusT__error:
591  retval = ASTATUS_ERROR;
592  break;
593  case vmi1__AnalysisStatusT__done:
594  retval = ASTATUS_DONE;
595  break;
596  default:
597  verror("unknown AnalysisStatusT %d\n",status);
598  retval = ASTATUS_UNKNOWN;
599  break;
600  }
601 
602  if (out)
603  *out = retval;
604 
605  return retval;
606 }
607 
608 enum vmi1__AnalysisStatusT
610  analysis_status_t status,
611  GHashTable *reftab,
612  enum vmi1__AnalysisStatusT *out) {
613 
614  enum vmi1__AnalysisStatusT retval;
615 
616  switch (status) {
617  case ASTATUS_UNKNOWN:
618  retval = vmi1__AnalysisStatusT__unknown;
619  break;
620  case ASTATUS_RUNNING:
621  retval = vmi1__AnalysisStatusT__running;
622  break;
623  case ASTATUS_PAUSED:
624  retval = vmi1__AnalysisStatusT__paused;
625  break;
626  case ASTATUS_ERROR:
627  retval = vmi1__AnalysisStatusT__error;
628  break;
629  case ASTATUS_DONE:
630  retval = vmi1__AnalysisStatusT__done;
631  break;
632  default:
633  verror("unknown analysis_status_t %d\n",status);
634  retval = vmi1__AnalysisStatusT__unknown;
635  break;
636  }
637 
638  if (out)
639  *out = retval;
640 
641  return retval;
642 }
uint32_t is_typed
Definition: analysis.h:331
struct vmi1__AnalysisResultT * a_analysis_datum_to_x_AnalysisResultT(struct soap *soap, struct analysis_datum *in, struct analysis *analysis, GHashTable *reftab, struct vmi1__AnalysisResultT *out)
Definition: analysis_xml.c:338
uint32_t log_stderr
Definition: analysis.h:296
char * binary
Definition: analysis.h:261
char * name
Definition: analysis.h:341
struct vmi1__AnalysisDescT * a_analysis_desc_to_x_AnalysisDescT(struct soap *soap, struct analysis_desc *in, GHashTable *reftab, struct vmi1__AnalysisDescT *out)
Definition: analysis_xml.c:112
GHashTable * in_params_long
Definition: analysis.h:278
uint32_t reports_intermediate_results
Definition: analysis.h:263
#define SOAP_CALLOC(soap, nmemb, size)
Definition: util.h:25
struct array_list * results
Definition: analysis.h:248
struct analysis_desc * x_AnalysisDescT_to_a_analysis_desc(struct soap *soap, struct vmi1__AnalysisDescT *in, GHashTable *reftab, struct analysis_desc *out)
Definition: analysis_xml.c:46
uint32_t reports_final_results
Definition: analysis.h:263
analysis_status_t
Definition: analysis.h:50
static uint64_t unsigned int i
char * name
Definition: analysis.h:256
unsigned long tsc
Definition: analysis.h:344
struct vmi1__AnalysisT * a_analysis_to_x_AnalysisT(struct soap *soap, struct analysis *in, GHashTable *reftab, struct vmi1__AnalysisT *out)
Definition: analysis_xml.c:24
struct vmi1__AnalysisResultsT * a_analysis_datum_list_to_x_AnalysisResultsT(struct soap *soap, struct array_list *in, struct analysis *analysis, GHashTable *reftab, struct vmi1__AnalysisResultsT *out)
Definition: analysis_xml.c:445
unsigned long counter
Definition: analysis.h:346
#define verror(format,...)
Definition: log.h:30
char * default_value
Definition: analysis.h:322
char * author
Definition: analysis.h:258
int target_id
Definition: analysis.h:228
int stdin_bytes_len
Definition: analysis.h:294
uint32_t is_simple
Definition: analysis.h:331
#define array_list_foreach(alist, lpc, placeholder)
Definition: alist.h:371
analysis_status_t status
Definition: analysis.h:221
int id
Definition: analysis.h:214
struct analysis_name_value * x_NameValueT_to_a_analysis_name_value(struct soap *soap, struct vmi1__NameValueT *in, struct analysis_name_value *out)
Definition: analysis_xml.c:536
struct vmi1__NameValueT * a_analysis_name_value_to_x_NameValueT(struct soap *soap, struct analysis_name_value *in, struct vmi1__NameValueT *out)
Definition: analysis_xml.c:555
uint32_t supports_external_control
Definition: analysis.h:263
struct analysis_spec * x_AnalysisSpecT_to_a_analysis_spec(struct soap *soap, struct vmi1__AnalysisSpecT *in, GHashTable *reftab, struct analysis_spec *out)
Definition: analysis_xml.c:191
struct vmi1__ParamT * a_param_to_x_ParamT(struct soap *soap, struct analysis_param *in, struct vmi1__ParamT *out)
Definition: analysis_xml.c:499
struct analysis_param * x_ParamT_to_a_param(struct soap *soap, struct vmi1__ParamT *in, struct analysis_param *out)
Definition: analysis_xml.c:472
uint32_t autoparse_simple_data
Definition: analysis.h:296
char * value
Definition: analysis.h:348
char * author_contact
Definition: analysis.h:259
enum vmi1__AnalysisStatusT a_analysis_status_t_to_x_AnalysisStatusT(struct soap *soap, analysis_status_t status, GHashTable *reftab, enum vmi1__AnalysisStatusT *out)
Definition: analysis_xml.c:609
int kill_on_close_sig
Definition: analysis.h:306
struct vmi1__AnalysisSpecT * a_analysis_spec_to_x_AnalysisSpecT(struct soap *soap, struct analysis_spec *in, GHashTable *reftab, struct vmi1__AnalysisSpecT *out)
Definition: analysis_xml.c:263
char * long_name
Definition: analysis.h:320
uint32_t generates_annotations
Definition: analysis.h:263
uint32_t kill_on_close
Definition: analysis.h:296
char * stdin_bytes
Definition: analysis.h:293
uint32_t supports_autoparse_simple_results
Definition: analysis.h:263
uint32_t requires_control
Definition: analysis.h:263
void * calloc(size_t nmemb, size_t size)
Definition: debugserver.c:200
uint8_t is_command_line_switched
Definition: analysis.h:317
char * name
Definition: analysis.h:319
uint32_t requires_write
Definition: analysis.h:263
char * description
Definition: analysis.h:257
GHashTable * out_params_long
Definition: analysis.h:280
unsigned long time
Definition: analysis.h:345
struct array_list * values
Definition: analysis.h:353
uint8_t is_command_line
Definition: analysis.h:317
GHashTable * in_params
Definition: analysis.h:277
char * custom
Definition: analysis.h:355
char * msg
Definition: analysis.h:349
uint32_t report_stderr_intermediate
Definition: analysis.h:296
#define SOAP_STRCPY(soap, d, s)
Definition: util.h:28
analysis_status_t x_AnalysisStatusT_to_a_analysis_status_t(struct soap *soap, enum vmi1__AnalysisStatusT status, GHashTable *reftab, analysis_status_t *out)
Definition: analysis_xml.c:574
char * description
Definition: analysis.h:321
uint32_t report_stdout_intermediate
Definition: analysis.h:296
struct array_list * in_params
Definition: analysis.h:309
char * name
Definition: analysis.h:289
uint32_t log_stdout
Definition: analysis.h:296
GHashTable * out_params
Definition: analysis.h:279