[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[groff] 11/15: [libgroff]: Fix Savannah #61174.
From: |
G. Branden Robinson |
Subject: |
[groff] 11/15: [libgroff]: Fix Savannah #61174. |
Date: |
Fri, 17 Sep 2021 05:34:39 -0400 (EDT) |
gbranden pushed a commit to branch master
in repository groff.
commit e97cdac9ddef51f8834e9eb32fedd44fdfac36cd
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
AuthorDate: Fri Sep 17 16:23:55 2021 +1000
[libgroff]: Fix Savannah #61174.
* src/libs/libgroff/font.cpp (font::load_desc): Emit correct line
numbers when complaining of invalid `sizescale`, `hor`, or `vert`
values in device description files.
Fixes <https://savannah.gnu.org/bugs/?61174>.
---
ChangeLog | 8 ++++++++
src/libs/libgroff/font.cpp | 26 +++++++++++---------------
2 files changed, 19 insertions(+), 15 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index ec8eeb3..1732526 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com>
+ * src/libs/libgroff/font.cpp (font::load_desc): Emit correct
+ line numbers when complaining of invalid `sizescale`, `hor`, or
+ `vert` values in device description files.
+
+ Fixes <https://savannah.gnu.org/bugs/?61174>.
+
+2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com>
+
[libgroff]: Increase validation of device and font description
files.
diff --git a/src/libs/libgroff/font.cpp b/src/libs/libgroff/font.cpp
index da8ca25..6baa85b 100644
--- a/src/libs/libgroff/font.cpp
+++ b/src/libs/libgroff/font.cpp
@@ -1061,12 +1061,20 @@ bool font::load_desc()
t.error("missing value for directive '%1'", p);
return false;
}
- //int *ptr = &(this->*(table[idx-1].ptr));
- int *ptr = table[idx-1].ptr;
- if (sscanf(q, "%d", ptr) != 1) {
+ int val;
+ if (sscanf(q, "%d", &val) != 1) {
t.error("'%1' directive given invalid number '%2'", p, q);
return false;
}
+ if ((strcmp(p, "sizescale") == 0
+ || strcmp(p, "hor") == 0
+ || strcmp(p, "vert") == 0)
+ && val < 1) {
+ t.error("expected argument to '%1' directive to be a"
+ " nonnegative number, got '%2'", p, val);
+ return false;
+ }
+ *(table[idx-1].ptr) = val;
}
else if (strcmp("family", p) == 0) {
p = strtok(0, WS);
@@ -1246,18 +1254,6 @@ bool font::load_desc()
t.error("device description file missing 'sizes' directive");
return false;
}
- if (sizescale < 1) {
- t.error("invalid 'sizescale' value");
- return false;
- }
- if (hor < 1) {
- t.error("invalid 'hor' value");
- return false;
- }
- if (vert < 1) {
- t.error("invalid 'vert' value");
- return false;
- }
return true;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [groff] 11/15: [libgroff]: Fix Savannah #61174.,
G. Branden Robinson <=