ref: 4c10b20ee85b5d2f4582137918dc014c2cd5aa7a
parent: c4c1ce10933423f5378cd68972ee12137152ad1f
author: qwx <qwx@sciops.net>
date: Sun Jan 12 10:20:10 EST 2025
fontsel: fix text buffer oob and crash due to insufficient stack size after IOUNIT change
--- a/sys/src/cmd/fontsel.c
+++ b/sys/src/cmd/fontsel.c
@@ -63,7 +63,6 @@
static Fontdir *dirs, *cdir;
static int ndirs, idir;
static char lasterr[256];
-int mainstacksize = 32768;
static void
redraw(void)
@@ -238,21 +237,19 @@
static void
loadtext(int f)
{
- Biobuf b;
+ Biobuf *b;
int i;
- if(f < 0 || Binit(&b, f, OREAD) != 0)
+ if(f < 0 || (b = Bfdopen(f, OREAD)) == nil)
sysfatal("loadtext: %r");
- text = nil;
- for(i = 0; i < 256; i++){
- if((text = realloc(text, (i+1)*sizeof(char*))) == nil)
- sysfatal("memory");
- if((text[i] = Brdstr(&b, '\n', 1)) == nil)
+ if((text = calloc(256+1, sizeof(char*))) == nil)
+ sysfatal("memory");
+ for(i = 0; i < 256; i++)
+ if((text[i] = Brdstr(b, '\n', 1)) == nil)
break;
- }
- close(f);
+ Bterm(b);
}
void
--
⑨