aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorla_ninpre <aaoth@aaoth.xyz>2026-01-28 12:23:56 +0300
committerla_ninpre <aaoth@aaoth.xyz>2026-01-28 12:26:16 +0300
commit16d48e4cd4edc15aa2ffe158d93248b5a57c3ea9 (patch)
treed11b606aa675351bbe90ff3a0dbe947a62ddd23d
parent2f0f3d45f4335327c269a689fbeb62b3003695aa (diff)
data: don't try to read something that's not a regular file
-rw-r--r--data.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/data.c b/data.c
index 02686e1..85bc401 100644
--- a/data.c
+++ b/data.c
@@ -2665,14 +2665,17 @@ static int _load_raw_file(const char *fn, xs_val **data, int *size,
}
else {
/* newer or never downloaded; read the full file */
+ struct stat sb;
FILE *f;
- if ((f = fopen(fn, "rb")) != NULL) {
- *size = XS_ALL;
- *data = xs_read(f, size);
- fclose(f);
+ if (stat(fn, &sb) == 0 && sb.st_mode & S_IFMT == S_IFREG) {
+ if ((f = fopen(fn, "rb")) != NULL) {
+ *size = XS_ALL;
+ *data = xs_read(f, size);
+ fclose(f);
- status = HTTP_STATUS_OK;
+ status = HTTP_STATUS_OK;
+ }
}
}