Signed-off-by: Alex Henrie <[email protected]> --- Hello, The ArchWiki currently implies that users with HiDPI screens should set a mkinitcpio hook to set the console font to latarcyrheb-sun32 in early userspace.[1-4] However, this does not actually work because latarcyrheb-sun32 is 34,377 bytes long when decompressed. Instead of getting a new font, the user gets the cryptic error "setfont: input file: bad length".[5]
A PSF font could in theory be even larger than 64 KiB because of an enormous Unicode map,[6] but in practice 64 KiB is a very safe limit. [1] https://wiki.archlinux.org/index.php/HiDPI#Linux_console [2] https://wiki.archlinux.org/index.php/Fonts#Console_fonts [3] https://wiki.archlinux.org/index.php/Mkinitcpio#HOOKS [4] https://wiki.archlinux.org/index.php/Mkinitcpio#Common_hooks [5] https://bugs.archlinux.org/task/19109#comment102571 [6] https://www.win.tue.nl/~aeb/linux/kbd/font-formats-1.html Please consider this simple fix for a very frustrating bug. -Alex console-tools/loadfont.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/console-tools/loadfont.c b/console-tools/loadfont.c index 032506d..bb536f1 100644 --- a/console-tools/loadfont.c +++ b/console-tools/loadfont.c @@ -75,6 +75,8 @@ struct psf1_header { && (x)->magic[1] == PSF1_MAGIC1 \ ) +#define MAX_PSF_LEN 65536 + #if ENABLE_FEATURE_LOADFONT_PSF2 enum { PSF2_MAGIC0 = 0x72, @@ -320,7 +322,7 @@ int loadfont_main(int argc UNUSED_PARAM, char **argv) * with stat(); now that we accept compressed files, * just read the entire file. */ - len = 32*1024; // can't be larger + len = MAX_PSF_LEN; buffer = xmalloc_read(STDIN_FILENO, &len); // xmalloc_open_zipped_read_close(filename, &len); if (!buffer) @@ -405,7 +407,7 @@ int setfont_main(int argc UNUSED_PARAM, char **argv) } } // load font - len = 32*1024; // can't be larger + len = MAX_PSF_LEN; buffer = xmalloc_open_zipped_read_close(*argv, &len); if (!buffer) bb_simple_perror_msg_and_die(*argv); -- 2.10.1 _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
