void ReadPromises(enum cfagenttype ag,char *agents) { char *v,rettype; void *retval; char vbuff[CF_BUFSIZE]; if (ag == cf_keygen) { return; } DeleteAllPromiseIds(); // in case we are re-reading, delete old handles /* Parse the files*/ Cf3ParseFiles(); /* Now import some web variables that are set in cf-know/control for the report options */ strncpy(STYLESHEET,"/cf_enterprise.css",CF_BUFSIZE-1); strncpy(WEBDRIVER,"",CF_MAXVARSIZE-1); /* Make the compilation reports*/ OpenReports(agents); SetAuditVersion(); if (GetVariable("control_common","version",&retval,&rettype) != cf_notype) { v = (char *)retval; } else { v = "not specified"; } snprintf(vbuff,CF_BUFSIZE-1,"Expanded promises for %s",agents); CfHtmlHeader(FREPORT_HTML,vbuff,STYLESHEET,WEBDRIVER,BANNER); fprintf(FREPORT_TXT,"Expanded promise list for %s component\n\n",agents); ShowContext(); fprintf(FREPORT_HTML,"<div id=\"reporttext\">\n"); fprintf(FREPORT_HTML,"%s",CFH[cfx_promise][cfb]); VerifyPromises(cf_common); fprintf(FREPORT_HTML,"%s",CFH[cfx_promise][cfe]); if (ag != cf_common) { ShowScopedVariables(); } fprintf(FREPORT_HTML,"</div>\n"); CfHtmlFooter(FREPORT_HTML,FOOTER); CloseReports(agents); }
Policy *GenericAgentLoadPolicy(EvalContext *ctx, GenericAgentConfig *config) { config->policy_last_read_attempt = time(NULL); StringSet *parsed_files = StringSetNew(); StringSet *failed_files = StringSetNew(); Policy *policy = LoadPolicyFile(ctx, config, config->input_file, parsed_files, failed_files); if (StringSetSize(failed_files) > 0) { Log(LOG_LEVEL_ERR, "There are syntax errors in policy files"); exit(EXIT_FAILURE); } StringSetDestroy(parsed_files); StringSetDestroy(failed_files); { Seq *errors = SeqNew(100, PolicyErrorDestroy); if (PolicyCheckPartial(policy, errors)) { if (!config->bundlesequence && (PolicyIsRunnable(policy) || config->check_runnable)) { Log(LOG_LEVEL_VERBOSE, "Running full policy integrity checks"); PolicyCheckRunnable(ctx, policy, errors, config->ignore_missing_bundles); } } if (SeqLength(errors) > 0) { Writer *writer = FileWriter(stderr); for (size_t i = 0; i < errors->length; i++) { PolicyErrorWrite(writer, errors->data[i]); } WriterClose(writer); exit(EXIT_FAILURE); // TODO: do not exit } SeqDestroy(errors); } if (LogGetGlobalLevel() >= LOG_LEVEL_VERBOSE) { ShowContext(ctx); } if (policy) { VerifyPromises(ctx, policy, config); } return policy; }