diff options
| author | la_ninpre <aaoth@aaoth.xyz> | 2026-01-28 12:23:56 +0300 |
|---|---|---|
| committer | la_ninpre <aaoth@aaoth.xyz> | 2026-01-28 12:26:16 +0300 |
| commit | 16d48e4cd4edc15aa2ffe158d93248b5a57c3ea9 (patch) | |
| tree | d11b606aa675351bbe90ff3a0dbe947a62ddd23d /data.c | |
| parent | 2f0f3d45f4335327c269a689fbeb62b3003695aa (diff) | |
data: don't try to read something that's not a regular file
Diffstat (limited to 'data.c')
| -rw-r--r-- | data.c | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -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; + } } } |