aboutsummaryrefslogtreecommitdiff
path: root/misc/bdfresize
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2021-09-10 15:22:48 -0400
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2021-10-13 00:52:15 +0700
commitf286b296adf78fc42f4a398212855b0e71f351d5 (patch)
tree5d17f0b22f663fbce4c6926cddc73269765f265f /misc/bdfresize
parent9f55e01c6ae0aea46f0f1464218653ef9dbc8a2f (diff)
misc/bdfresize: Add argument checking.
Signed-off-by: B. Watson <yalhcru@gmail.com> Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'misc/bdfresize')
-rw-r--r--misc/bdfresize/bdfresize.SlackBuild27
-rw-r--r--misc/bdfresize/check_factor_args.diff48
2 files changed, 66 insertions, 9 deletions
diff --git a/misc/bdfresize/bdfresize.SlackBuild b/misc/bdfresize/bdfresize.SlackBuild
index cfeae4d3b5adf..e2e41c8b5f142 100644
--- a/misc/bdfresize/bdfresize.SlackBuild
+++ b/misc/bdfresize/bdfresize.SlackBuild
@@ -6,11 +6,15 @@
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+# 20210910 bkw: BUILD=2
+# - fix FONTBOUNDINGBIX typo.
+# - add check_factor_args.diff.
+
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=bdfresize
VERSION=${VERSION:-1.5}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -22,9 +26,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -57,14 +58,22 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+# 20210910 bkw: this one-liner patch came from Debian
patch -p1 < $CWD/compilefix.diff
+# 20210910 bkw: fix typo in docs
+sed -i 's,FONTBOUNDINGBIX,FONTBOUNDINGBOX,g' README $PRGNAM.1
+
+# 20210910 bkw: if someone tries to use a decimal as a factor,
+# e.g. 1.5, bdfresize silently ignores the .5 and treats the argument
+# as just 1. This patch adds a check to make sure the factors consist
+# only of digits and 0 or 1 slashes. Patch is by the SlackBuild
+# author, who keeps trying to say "-f 1.5" despite all sanity...
+patch -p1 < $CWD/check_factor_args.diff
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
diff --git a/misc/bdfresize/check_factor_args.diff b/misc/bdfresize/check_factor_args.diff
new file mode 100644
index 0000000000000..5b9ad32e2cad0
--- /dev/null
+++ b/misc/bdfresize/check_factor_args.diff
@@ -0,0 +1,48 @@
+diff -Naur bdfresize-1.5/bdfresize.c bdfresize-1.5.patched/bdfresize.c
+--- bdfresize-1.5/bdfresize.c 2001-01-16 07:11:11.000000000 -0500
++++ bdfresize-1.5.patched/bdfresize.c 2021-09-10 14:39:09.553534254 -0400
+@@ -48,6 +48,22 @@
+
+ static int line;
+
++static int factor_is_bad(const char *p) {
++ int slashes = 0;
++ while(*p) {
++ if(*p == '/') {
++ if(++slashes > 1)
++ return 1;
++ } else if(*p >= '0' && *p <= '9') {
++ /* NOP */
++ } else {
++ return 1;
++ }
++ p++;
++ }
++ return 0;
++}
++
+ int
+ main(int argc, char *argv[])
+ {
+@@ -64,18 +80,21 @@
+ if (blackness <= 0) err ++;
+ break;
+ case 'w':
++ err += factor_is_bad(optarg);
+ numerator_x = atoi(optarg);
+ denominator_x = strchr(optarg,'/')
+ ? atoi(strchr(optarg,'/')+1) : 1;
+ if (numerator_x <= 0 || denominator_x <= 0) err ++;
+ break;
+ case 'h':
++ err += factor_is_bad(optarg);
+ numerator_y = atoi(optarg);
+ denominator_y = strchr(optarg,'/')
+ ? atoi(strchr(optarg,'/')+1) : 1;
+ if (numerator_y <= 0 || denominator_y <= 0) err ++;
+ break;
+ case 'f':
++ err += factor_is_bad(optarg);
+ numerator_x = numerator_y = atoi(optarg);
+ denominator_x = denominator_y = strchr(optarg,'/')
+ ? atoi(strchr(optarg,'/')+1) : 1;