gbranden pushed a commit to branch master
in repository groff.
commit fc98eb14860c5ff3523049515b2654200b809ac1
Author: G. Branden Robinson <[email protected]>
AuthorDate: Thu Jun 12 16:52:32 2025 -0500
[gropdf]: Use stricter MS-DOS/Win filespec check.
* src/devices/gropdf/gropdf.pl (OpenFontFile, OpenIncludedFile): Make
check for MS-DOS/Windows-style absolute filespec stricter; not only
must the second character be ':', but the first must now be an
uppercase Basic Latin letter.
---
ChangeLog | 9 +++++++++
src/devices/gropdf/gropdf.pl | 10 +++++++---
2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 56d482699..41f5fe309 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2025-07-04 G. Branden Robinson <[email protected]>
+
+ [gropdf]: Use stricter MS-DOS/Windows filespec check.
+
+ * src/devices/gropdf/gropdf.pl (OpenFontFile)
+ (OpenIncludedFile): Make check for MS-DOS/Windows-style absolute
+ filespec stricter; not only must the second character be ':',
+ but the first must now be an uppercase Basic Latin letter.
+
2025-07-04 G. Branden Robinson <[email protected]>
* src/devices/gropdf/gropdf.pl: Refactor.
diff --git a/src/devices/gropdf/gropdf.pl b/src/devices/gropdf/gropdf.pl
index 74c49c085..60431d647 100644
--- a/src/devices/gropdf/gropdf.pl
+++ b/src/devices/gropdf/gropdf.pl
@@ -1238,8 +1238,9 @@ sub OpenFontFile
# Is the file specification absolute?
#
# XXX: Forbid this? See Savannah #66419.
- if ((substr($fileName,0,1) eq '/')
- or (substr($fileName,1,1) eq ':')) # dos
+ if (substr($fileName,0,1) eq '/' # POSIX
+ or (substr($fileName,0,1) =~ m/[A-Z]/
+ and substr($fileName,1,1) eq ':')) # MS-DOS/Windows
{
$resolvedFileName=$fileName
if (-r "$fileName" and open($$f,"<$fileName"));
@@ -2463,7 +2464,10 @@ sub OpenIncludedFile
my $fileName=undef;
my $F;
- if (substr($arg,0,1) eq '/' or substr($arg,1,1) eq ':') # dos
+ # Is the file specification absolute?
+ if (substr($arg,0,1) eq '/' # POSIX
+ or (substr($arg,0,1) =~ m/[A-Z]/
+ and substr($arg,1,1) eq ':')) # MS-DOS/Windows
{
if (-r $arg and open($F,"<$arg"))
{
_______________________________________________
groff-commit mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/groff-commit