Просмотр исходного кода

data: don't try to read something that's not a regular file

la_ninpre 6 месяцев назад
Родитель
Сommit
16d48e4cd4
1 измененных файлов с 8 добавлено и 5 удалено
  1. 8 5
      data.c

+ 8 - 5
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;
+                    }
                 }
             }