aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/afl-showmap.c12
-rw-r--r--src/third_party/libradamsa/libradamsa.c6
2 files changed, 17 insertions, 1 deletions
diff --git a/src/afl-showmap.c b/src/afl-showmap.c
index 9c146771..1686a750 100644
--- a/src/afl-showmap.c
+++ b/src/afl-showmap.c
@@ -925,6 +925,9 @@ int main(int argc, char** argv) {
struct dirent* dir_ent;
int done = 0;
u8 infile[4096], outfile[4096];
+#if !defined(DT_REG)
+ struct stat statbuf;
+#endif
dev_null_fd = open("/dev/null", O_RDWR);
if (dev_null_fd < 0) PFATAL("Unable to open /dev/null");
@@ -970,9 +973,18 @@ int main(int argc, char** argv) {
if (dir_ent->d_name[0] == '.')
continue; // skip anything that starts with '.'
+
+#if defined(DT_REG) /* Posix and Solaris do not know d_type and DT_REG */
if (dir_ent->d_type != DT_REG) continue; // only regular files
+#endif
snprintf(infile, sizeof(infile), "%s/%s", in_dir, dir_ent->d_name);
+
+#if !defined(DT_REG) /* use stat() */
+ if (-1 == stat(infile, &statbuf)
+ || !S_ISREG(statbuf.st_mode)) continue;
+#endif
+
snprintf(outfile, sizeof(outfile), "%s/%s", out_file, dir_ent->d_name);
if (read_file(infile)) {
diff --git a/src/third_party/libradamsa/libradamsa.c b/src/third_party/libradamsa/libradamsa.c
index be3050b1..f3677fa7 100644
--- a/src/third_party/libradamsa/libradamsa.c
+++ b/src/third_party/libradamsa/libradamsa.c
@@ -2405,7 +2405,11 @@ static word prim_sys(word op, word a, word b, word c) {
EOPNOTSUPP, EOVERFLOW, EOWNERDEAD, EPERM, EPIPE, EPROTO, EPROTONOSUPPORT, EPROTOTYPE,
ERANGE, EROFS, ESPIPE, ESRCH, ESTALE, ETIME, ETIMEDOUT, ETXTBSY,
EWOULDBLOCK, EXDEV, SEEK_SET, SEEK_CUR, SEEK_END, O_EXEC, O_RDONLY, O_RDWR,
- O_SEARCH, O_WRONLY, O_APPEND, O_CLOEXEC, O_CREAT, O_DIRECTORY, O_DSYNC, O_EXCL,
+ O_SEARCH, O_WRONLY, O_APPEND, O_CLOEXEC, O_CREAT,
+#if defined O_DIRECTORY
+ O_DIRECTORY,
+#endif
+ O_DSYNC, O_EXCL,
O_NOCTTY, O_NOFOLLOW, O_NONBLOCK, O_RSYNC, O_SYNC, O_TRUNC, O_TTY_INIT, O_ACCMODE,
FD_CLOEXEC, F_DUPFD, F_DUPFD_CLOEXEC, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN,
F_SETOWN, F_GETLK, F_SETLK, F_SETLKW, F_RDLCK, F_UNLCK, F_WRLCK, CLOCK_MONOTONIC,