summaryrefslogtreecommitdiff
path: root/lib/tmpdir.rb
AgeCommit message (Collapse)Author
2024-12-16[ruby/tmpdir] Move private constants under `Dir::Tmpname` moduleNobuyoshi Nakada
Including `TMPDIR_CANDIDATES` extracted from `Dir.tmpdir` invariant. https://github.com/ruby/tmpdir/commit/d219ee273f
2024-12-16[ruby/tmpdir] Tell if the block is given by block argumentNobuyoshi Nakada
https://github.com/ruby/tmpdir/commit/6e97a96d3b
2024-12-16[ruby/tmpdir] Fix for path-like objectsNobuyoshi Nakada
Fix https://github.com/ruby/tmpdir/pull/37 https://github.com/ruby/tmpdir/commit/a8ceafae7d
2024-10-22Perform an actual access check in Dir.tmpdir for writabilityKJ Tsanaktsidis
At the moment, this code is looking at the stat output to determine if a temp directory can be written to. However, just because the stat bits say that a directory is writable, does not make it so; and, likewise, the operating system may in fact grant access to paths that the stat bits and process UID say should be inaccessible. These systems include: * Posix ACL's * Linux's capabilities like CAP_DAC_OVERRIDE * Linux Security Modules like SELinux or AppArmor * Syscall filters like Linux's seccomp * Granular capability systems like FreeBSD's Capsicum * OpenBSD's pledge and unveil * Windows too has a rich ACL system for controlling filesystem access The best thing to do is simply to try and access the path with `File.writable?` and let the operating system tell us if the path can be accessed. Notes: Merged: https://github.com/ruby/ruby/pull/11403
2024-09-10[ruby/tmpdir] Reject empty parent pathNobuyoshi Nakada
https://github.com/ruby/tmpdir/commit/628c5bdc59
2024-04-08[ruby/tmpdir] Display the offending parent path in the exceptionNobuyoshi Nakada
https://github.com/ruby/tmpdir/commit/7751b12e97
2024-02-25[ruby/tmpdir] [DOC] `require` inside each method on DirAdam Daniels
(https://github.com/ruby/tmpdir/pull/31) https://github.com/ruby/tmpdir/commit/a1ec977923
2024-02-15Do not include a backtick in error messages and backtracesYusuke Endoh
[Feature #16495]
2023-07-03[ruby/tmpdir] [Bug #18933] Make `Dir.mktmpdir` Ractor-safeNobuyoshi Nakada
Fix https://bugs.ruby-lang.org/issues/18933 https://github.com/ruby/tmpdir/commit/446e636434
2022-10-25[ruby/tmpdir] Ignore empty environment variablesNobuyoshi Nakada
Fixes https://github.com/ruby/tmpdir/pull/17 https://github.com/ruby/tmpdir/commit/a79c727a5d
2022-10-25[ruby/tmpdir] Found or raise Nobuyoshi Nakada
2022-10-25[ruby/tmpdir] Make `Dir.tmpdir` more idiomatic and functionalPeter Vandenberk
Use `Enumerable#find` to iterate over the candidates, not `Enumerable.each`. (this makes the code more functional, and - IMO - slightly more idiomatic, as it avoids setting the "global" (by which I mean: non-local) `tmp` variable from inside the block) https://github.com/ruby/tmpdir/commit/d1f20ad694
2022-10-25[ruby/tmpdir] Fix typo Nobuyoshi Nakada
2022-10-25[ruby/tmpdir] [DOC] Improve documentationNobuyoshi Nakada
https://github.com/ruby/tmpdir/commit/b9c880f2b6
2021-11-11[ruby/tmpdir] [DOC] Fix syntax in example code [ci skip]Nobuyoshi Nakada
RDoc expects example code to be valid syntax. https://github.com/ruby/tmpdir/commit/ee42540ebb
2021-04-05[ruby/tmpdir] Make usable chars more strictNobuyoshi Nakada
Remove other than alphanumeric and some punctuations considered filesystem-safe, instead of removing some unsafe chars only. https://hackerone.com/reports/1131465 https://github.com/ruby/tmpdir/commit/adf294bc2d
2020-09-14[ruby/tmpdir] Warn when environment variables skipped (fixes #2)Nobuyoshi Nakada
https://github.com/ruby/tmpdir/commit/af7b020a89
2020-05-29Correctly remove temporary directory if path yielded is mutatedJeremy Evans
Another approach would be to freeze the string, but that could cause backwards compatibility issues. Fixes [Bug #16918] Notes: Merged: https://github.com/ruby/ruby/pull/3159
2020-01-29Isolate the PRNG for tmpdir/tempfileNobuyoshi Nakada
To get rid of conflicts affected by `srand`.
2019-11-18Warn on access/modify of $SAFE, and remove effects of modifying $SAFEJeremy Evans
This removes the security features added by $SAFE = 1, and warns for access or modification of $SAFE from Ruby-level, as well as warning when calling all public C functions related to $SAFE. This modifies some internal functions that took a safe level argument to no longer take the argument. rb_require_safe now warns, rb_require_string has been added as a version that takes a VALUE and does not warn. One public C function that still takes a safe level argument and that this doesn't warn for is rb_eval_cmd. We may want to consider adding an alternative method that does not take a safe level argument, and warn for rb_eval_cmd. Notes: Merged: https://github.com/ruby/ruby/pull/2476
2019-08-30Fix keyword argument separation issues in libJeremy Evans
Mostly requires adding ** in either calls or method definitions. Notes: Merged: https://github.com/ruby/ruby/pull/2395
2019-06-21Constified unusable charsNobuyoshi Nakada
2019-01-23tmpdir.rb: permission of user given directorynobu
* lib/tmpdir.rb (Dir.mktmpdir): check if the permission of the parent directory only when using the default temporary directory, and no check against user given directory. the security is the user's responsibility in that case. [ruby-core:91216] [Bug #15555] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66909 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-28Ignore file separator from tmpfile/tmpdir name.hsbt
From: SHIBATA Hiroshi <hsbt@ruby-lang.org> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62990 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-11-15tmpdir.rb: merged make_tmpname to createnobu
* lib/tmpdir.rb (Dir::Tmpname#create): try conversion of prefix and suffix just once before loop. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60775 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-02-26* lib/tmpdir.rb: Unify to coding-style for method definition.hsbt
[fix GH-1252] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-10* lib/open-uri.rb: Remove indicator for "frozen_string_literal: true".akr
* lib/pp.rb: Ditto. * lib/prettyprint.rb: Ditto. * lib/resolv.rb: Ditto. * lib/securerandom.rb: Ditto. * lib/tmpdir.rb: Ditto. * lib/unicode_normalize/tables.rb: Ditto. * test/net/ftp/test_buffered_socket.rb: Ditto. * test/net/ftp/test_mlsx_entry.rb: Ditto. * test/open-uri/test_open-uri.rb: Ditto. * test/open-uri/test_ssl.rb: Ditto. * test/pathname/test_pathname.rb: Ditto. * test/test_pp.rb: Ditto. * test/test_prettyprint.rb: Ditto. * tool/transcode-tblgen.rb: Ditto. * ext/pathname/lib/pathname.rb: Ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52526 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-06* lib/tmpdir.rb (Dir.tmpdir): return duplicated string to beakr
modify safely even when $SAFE > 0. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52062 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-05Put an line before "frozen_string_literal: true" for emacs.akr
https://bugs.ruby-lang.org/issues/8976#note-49 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52052 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-05* lib/pp.rb: Use frozen_string_literal: true.akr
* lib/prettyprint.rb: Ditto. * lib/resolv.rb: Ditto. * lib/tmpdir.rb: Ditto. * test/test_pp.rb: Ditto. * test/test_prettyprint.rb: Ditto. * tool/transcode-tblgen.rb: Ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52042 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-20* lib/tmpdir.rb (Dir.mktmpdir): Accept nil again, as Ruby 2.1.akr
[ruby-core:66943] [Bug #10616] Fixed by Alex Slynko. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48905 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-09-22tmpdir.rb: explicit conversion to stringnobu
* lib/tmpdir.rb (Dir::Tmpname#make_tmpname): convert prefix and suffix to strings explicitly. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47681 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-09-21tempfile.rb: fix r47655nobu
* lib/tempfile.rb (Tempfile#initialize, Tempfile.create): get rid of shadowing local variables. * lib/tmpdir.rb (Dir::Tmpname#make_tmpname): simlify argument splitting. * test/test_tempfile.rb: need thread library for ConditionVariable. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47656 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-09-20* lib/tempfile.rb: define parameters appropriately and someglass
refactoring. * lib/tmpdir.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47655 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-07-26* lib/shell/command-processor.rb: remove unused variable.hsbt
* lib/shell/system-command.rb: ditto. * lib/tmpdir.rb: ditto. * lib/uri/generic.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46969 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-04-29* (lib/tmpdir.rb): Rescue LoadError on etc.so for miniruby.akr
Revert r45707, r45711, r45717. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45744 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-04-24* lib/tmpdir.rb: Don't need to rescue LoadError for etc.so.akr
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45707 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-19fix typos. Patch by k_takata.ktsj
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40825 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-12tmpdir.rb: not expand tildenobu
* lib/tmpdir.rb (Dir::Tmpname#create): deal with a prefix name which starts with tilde as a plain name, not expanding as home directory. [ruby-core:50793] [Bug #7547] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38348 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-12* lib/tmpdir.rb (Dir::tmpdir): test the current directory suitable forakr
temporary directory. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34988 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-11* lib/tmpdir.rb: update document for changingakr
FileUtils.remove_entry_secure to FileUtils.remove_entry. * NEWS: add incompatiblity note for lib/tmpdir.rb. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34980 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-11* lib/tmpdir.rb (Dir.tmpdir): should not use world-writable butnobu
non-sticky directory. * lib/tmpdir.rb (Dir.mktmpdir): check the parent directory. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-18 * lib: Convert tabs to spaces for ruby files perdrbrain
http://redmine.ruby-lang.org/projects/ruby/wiki/DeveloperHowto#coding-style Patch by Steve Klabnik [Ruby 1.9 - Bug #4730] Patch by Jason Dew [Ruby 1.9 - Feature #4718] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-08* ext/etc/etc.c (etc_systmpdir): moved from ext/tmpdir.nobu
* ext/etc/etc.c (etc_sysconfdir): added. * lib/rubygems/config_file.rb, lib/tmpdir.rb: use etc. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27667 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-06* lib/tmpdir.rb: test RUBY_PLATFORM for loading tmpdir.so to avoidakr
LoadError. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27638 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-16* ext/tmpdir: split from lib/tmpdir.rb.nobu
* win32/win32.c (rb_w32_system_tmpdir): extracted from init_env. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-11* lib/tempfile.rb (Tempfile#initialize): merge mode option.nobu
* lib/tmpdir.rb (Dir::Tmpname#create): splat options. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25720 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-11* lib/tmpdir.rb (Dir::Tmpname): for internal use.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24848 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-08* lib/tempfile.rb, lib/tmpdir.rb (Tmpname): extracted new module.nobu
[ruby-dev:39197] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24795 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-29* lib/tmpdir.rb (Dir.mktmpdir): rolled back r24699. [ruby-dev:39193]nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24701 b2dd03c8-39d4-4d8f-98ff-823fe69b080e