diff -Paur --no-dereference -- patch.upstream/configure patch/configure --- patch.upstream/configure +++ patch/configure @@ -1,4 +1,123 @@ #! /bin/sh +# Make gnulib assume the best about unknown operating systems when cross-compiling. +export ac_cv_func_calloc_0_nonnull=yes +export ac_cv_func_chown_works=yes +export ac_cv_func_getgroups_works=yes +export ac_cv_func_malloc_0_nonnull=yes +export gl_cv_func_cbrtl_ieee=yes +export gl_cv_func_ceilf_ieee=yes +export gl_cv_func_ceil_ieee=yes +export gl_cv_func_ceill_ieee=yes +export gl_cv_func_chown_ctime_works=yes +export gl_cv_func_chown_slash_works=yes +export gl_cv_func_exp2l_ieee=yes +export gl_cv_func_expm1_ieee=yes +export gl_cv_func_fcntl_f_dupfd_works=yes # Not needed since February 2015 +export gl_cv_func_fdopendir_works=yes +export gl_cv_func_floorf_ieee=yes +export gl_cv_func_fmaf_works=yes +export gl_cv_func_fmal_works=yes +export gl_cv_func_fma_works=yes +export gl_cv_func_fmodf_ieee=yes +export gl_cv_func_fmod_ieee=yes +export gl_cv_func_fmodl_ieee=yes +export gl_cv_func_fpurge_works=yes +export gl_cv_func_futimens_works=yes +export gl_cv_func_futimesat_works=yes +export gl_cv_func_getgroups_works=yes +export gl_cv_func_gettimeofday_clobber=no +export gl_cv_func_hypotf_ieee=yes +export gl_cv_func_hypotl_ieee=yes +export gl_cv_func_hypot_ieee=yes +export gl_cv_func_isfinitel_works=yes +export gl_cv_func_isnanl_works=yes +export gl_cv_func_linkat_slash=yes +export gl_cv_func_link_works=yes +export gl_cv_func_log10f_ieee=yes +export gl_cv_func_log10_ieee=yes +export gl_cv_func_log1pf_ieee=yes +export gl_cv_func_log1p_ieee=yes +export gl_cv_func_log1pl_ieee=yes +export gl_cv_func_log2f_ieee=yes +export gl_cv_func_log2_ieee=yes +export gl_cv_func_logf_ieee=yes +export gl_cv_func_log_ieee=yes +export gl_cv_func_lstat_dereferences_slashed_symlink=yes +export gl_cv_func_mbrlen_empty_input=yes +export gl_cv_func_mbrtowc_empty_input=yes +export gl_cv_func_memchr_works=yes +export gl_cv_func_memmem_works_fast=yes +export gl_cv_func_mkdir_trailing_dot_works=yes +export gl_cv_func_mkdir_trailing_slash_works=yes +export gl_cv_func_mkfifo_works=yes +export gl_cv_func_mknod_works=yes +export gl_cv_func_modff_ieee=yes +export gl_cv_func_modf_ieee=yes +export gl_cv_func_modfl_ieee=yes +export gl_cv_func_nanosleep=yes +export gl_cv_func_open_directory_works=yes +export gl_cv_func_perror_works=yes +export gl_cv_func_printf_directive_a=yes +export gl_cv_func_printf_directive_f=yes +export gl_cv_func_printf_directive_n=yes +export gl_cv_func_printf_enomem=yes +export gl_cv_func_printf_flag_zero=yes +export gl_cv_func_printf_infinite_long_double=yes +export gl_cv_func_printf_infinite=yes +export gl_cv_func_printf_sizes_c99=yes +export gl_cv_func_pselect_detects_ebadf=yes +export gl_cv_func_ptsname_sets_errno=yes +export gl_cv_func_readlink_works=yes +export gl_cv_func_realpath_works=yes +export gl_cv_func_remainderf_ieee=yes +export gl_cv_func_remainder_ieee=yes +export gl_cv_func_remainderl_ieee=yes +export gl_cv_func_rename_dest_works=yes +export gl_cv_func_rename_link_works=yes +export gl_cv_func_rename_slash_dst_works=yes +export gl_cv_func_rename_slash_src_works=yes +export gl_cv_func_rmdir_works=yes +export gl_cv_func_roundf_ieee=yes +export gl_cv_func_round_ieee=yes +export gl_cv_func_select_detects_ebadf=yes +export gl_cv_func_setenv_works=yes +export gl_cv_func_signbit_gcc=yes +export gl_cv_func_signbit=yes +export gl_cv_func_sleep_works=yes +export gl_cv_func_snprintf_directive_n=yes +export gl_cv_func_snprintf_retval_c99=yes +export gl_cv_func_snprintf_truncation_c99=yes +export gl_cv_func_stat_dir_slash=yes +export gl_cv_func_stat_file_slash=yes +export gl_cv_func_stpncpy=yes +export gl_cv_func_strcasestr_linear=yes +export gl_cv_func_strchrnul_works=yes +export gl_cv_func_strerror_0_works=yes +export gl_cv_func_strstr_linear=yes +export gl_cv_func_strtod_works=yes +export gl_cv_func_svid_putenv=yes +export gl_cv_func_symlink_works=yes +export gl_cv_func_tdelete_works=yes +export gl_cv_func_truncf_ieee=yes +export gl_cv_func_trunc_ieee=yes +export gl_cv_func_truncl_ieee=yes +export gl_cv_func_tzset_clobber=no +export gl_cv_func_ungetc_works=yes +export gl_cv_func_unlink_honors_slashes=yes +export gl_cv_func_unsetenv_works=yes +export gl_cv_func_usleep_works=yes +export gl_cv_func_utimensat_works=yes +export gl_cv_func_vsnprintf_posix=yes +export gl_cv_func_vsnprintf_zerosize_c99=yes +export gl_cv_func_vsprintf_posix=yes +export gl_cv_func_wcwidth_works=yes +export gl_cv_func_working_getdelim=yes +export gl_cv_func_working_mkstemp=yes +export gl_cv_func_working_mktime=yes +export gl_cv_func_working_strerror=yes +export ac_cv_func___fseterr=yes # Only if the OS actually supports this, Sortix does. +export gl_cv_func_getcwd_null=yes # Only if the OS actually supports this, Sortix does. +export gl_cv_struct_dirent_d_ino=yes # Only if the OS actually supports this, Sortix does. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for GNU patch 2.7.6. # diff -Paur --no-dereference -- patch.upstream/lib/getgroups.c patch/lib/getgroups.c --- patch.upstream/lib/getgroups.c +++ patch/lib/getgroups.c @@ -30,7 +30,7 @@ /* Provide a stub that fails with ENOSYS, since there is no group information available on mingw. */ int -getgroups (int n _GL_UNUSED, GETGROUPS_T *groups _GL_UNUSED) +getgroups (int n _GL_UNUSED, gid_t *groups _GL_UNUSED) { errno = ENOSYS; return -1; diff -Paur --no-dereference -- patch.upstream/src/safe.c patch/src/safe.c --- patch.upstream/src/safe.c +++ patch/src/safe.c @@ -101,6 +101,8 @@ max_cached_fds = 8; if (getrlimit (RLIMIT_NOFILE, &nofile) == 0) max_cached_fds = MAX (nofile.rlim_cur / 4, max_cached_fds); + /* PATCH: Avoid OOM if the file descriptors are unlimited. */ + max_cached_fds = MIN (1024, max_cached_fds); cached_dirfds = hash_initialize (max_cached_fds, NULL, @@ -229,7 +231,8 @@ /* Actually get the new directory file descriptor. Don't follow symbolic links. */ - fd = openat (dir->fd, name, O_DIRECTORY | O_NOFOLLOW); + /* PATCH: Request read permission instead of assuming O_RDONLY is 0. */ + fd = openat (dir->fd, name, O_RDONLY | O_DIRECTORY | O_NOFOLLOW); /* Don't cache errors. */ if (fd < 0) diff -Paur --no-dereference -- patch.upstream/src/util.c patch/src/util.c --- patch.upstream/src/util.c +++ patch/src/util.c @@ -54,6 +54,10 @@ #include +#ifndef PATH_MAX +#define PATH_MAX 32768 +#endif + static void makedirs (char const *); typedef struct