From 2a8416eaa85af6348fe34859859a7fb39db2003d Mon Sep 17 00:00:00 2001 From: Louis Burda Date: Mon, 10 May 2021 15:05:25 +0200 Subject: save scan info and model, added vuln in load info, small tweaks create result directory with serialized info struct and model file after successful scan, dont modify the stl file contents during parsing, EOF getc vuln to truncate loaded hash added in load_info --- service/src/util.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 62 insertions(+), 4 deletions(-) (limited to 'service/src/util.c') diff --git a/service/src/util.c b/service/src/util.c index 946bc19..7d3317b 100644 --- a/service/src/util.c +++ b/service/src/util.c @@ -29,14 +29,14 @@ aprintf(const char *fmtstr, ...) va_copy(cpy, ap); va_start(cpy, fmtstr); - nb = vsnprintf(NULL, 0, fmtstr, ap); + nb = vsnprintf(NULL, 0, fmtstr, cpy); va_end(cpy); - if (nb <= 0) die("encountered invalid fmtstr!\n"); + if (nb <= 0) die("Invalid fmtstr!\n"); + str = checkp(malloc(nb+1)); - str = checkp(malloc(nb)); va_start(ap, fmtstr); - nb = vsnprintf(str, nb, fmtstr, ap); + nb = vsnprintf(str, nb+1, fmtstr, ap); va_end(ap); return str; @@ -71,4 +71,62 @@ mhash(const char *filename, int len) return buf; } +void +freadstr(FILE *f, char **dst) +{ + size_t start, len; + char c; + + start = ftell(f); + while ((c = fgetc(f)) != EOF && c) len++; + + *dst = calloc(len + 1, 1); + fread(*dst, len, 1, f); +} + +void +fputstr(FILE *f, char *s) +{ + fprintf(f, "%s", s); + fputc(0, f); +} + +const char* +ask(const char *fmtstr, ...) +{ + static char linebuf[256]; + va_list ap; + int fail; + + va_start(ap, fmtstr); + vprintf(fmtstr, ap); + va_end(ap); + + fail = !fgets(linebuf, sizeof(linebuf), stdin); + + if (!fail) linebuf[strlen(linebuf) - 1] = '\0'; + + return fail ? "" : linebuf; +} + +void +dump(const char *filename) +{ + char buf[256]; + FILE *f; + int nb; + + if (!(f = fopen(filename, "r"))) return; + + while ((nb = fread(buf, 1, sizeof(buf), f))) + printf("%.*s\n", nb, buf); + + fclose(f); +} + +int +strpfcmp(const char *prefix, const char *str) +{ + return strncmp(prefix, str, strlen(prefix)); +} -- cgit v1.2.3-71-gd317