aboutsummaryrefslogtreecommitdiffstats
path: root/src/patches
diff options
context:
space:
mode:
Diffstat (limited to 'src/patches')
-rw-r--r--src/patches/flagstore1.diff17
-rw-r--r--src/patches/flagstore2.diff11
2 files changed, 28 insertions, 0 deletions
diff --git a/src/patches/flagstore1.diff b/src/patches/flagstore1.diff
new file mode 100644
index 0000000..f0f8d4a
--- /dev/null
+++ b/src/patches/flagstore1.diff
@@ -0,0 +1,17 @@
+--- a/service/src/safe_util.c
++++ b/service/src/safe_util.c
+@@ -78,13 +78,12 @@ void
+ freadstr(FILE *f, char **dst)
+ {
+ size_t start, len, tmp;
+- char c;
+
+ /* VULN #1: BAD CAST */
+ /* see documentation/README.md for more details */
+
+ start = ftell(f);
+- for (len = 0; (c = fgetc(f)) != EOF && c; len++);
++ for (len = 0; fgetc(f) > 0; len++);
+ fseek(f, start, SEEK_SET);
+
+ *dst = checkp(calloc(1, len + 1));
diff --git a/src/patches/flagstore2.diff b/src/patches/flagstore2.diff
new file mode 100644
index 0000000..b34a0c0
--- /dev/null
+++ b/src/patches/flagstore2.diff
@@ -0,0 +1,11 @@
+--- a/service/src/safe_util.c
++++ b/service/src/safe_util.c
+@@ -58,7 +58,7 @@ mhash(const char *str, int len)
+ srand(v);
+
+ for (bp = buf, i = 0; i < MHASHLEN / 2; i++)
+- bp += sprintf(bp, "%02x", str[i % len] ^ (rand() % 256));
++ bp += sprintf(bp, "%02x", (unsigned char) str[i % len] ^ (rand() % 256));
+
+ return buf;
+ }