* [9front] sam input line length limits @ 2021-02-13 0:45 sl 2021-02-13 2:47 ` Nick Owens 2021-02-13 3:43 ` ori 0 siblings, 2 replies; 7+ messages in thread From: sl @ 2021-02-13 0:45 UTC (permalink / raw) To: 9front sam.h says: /* * BLOCKSIZE is relatively small to keep memory consumption down. */ and: #define BLOCKSIZE 2048 and: #define STRSIZE (2*BLOCKSIZE) is there a compelling reason to keep STRSIZE so small, in this day and age? problem case: users trying to paste in long articles from websites. sl ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [9front] sam input line length limits 2021-02-13 0:45 [9front] sam input line length limits sl @ 2021-02-13 2:47 ` Nick Owens 2021-02-13 3:43 ` ori 1 sibling, 0 replies; 7+ messages in thread From: Nick Owens @ 2021-02-13 2:47 UTC (permalink / raw) To: 9front i would be fine bumping the snarf size and making this match. 640k ought to be enough for anybody. On Fri, Feb 12, 2021 at 4:48 PM <sl@stanleylieber.com> wrote: > > sam.h says: > > /* > * BLOCKSIZE is relatively small to keep memory consumption down. > */ > > and: > > #define BLOCKSIZE 2048 > > and: > > #define STRSIZE (2*BLOCKSIZE) > > is there a compelling reason to keep STRSIZE so small, in this day and > age? > > problem case: > > users trying to paste in long articles from websites. > > sl ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [9front] sam input line length limits 2021-02-13 0:45 [9front] sam input line length limits sl 2021-02-13 2:47 ` Nick Owens @ 2021-02-13 3:43 ` ori 2021-02-13 3:55 ` sl 2021-02-13 16:25 ` Steve Simon 1 sibling, 2 replies; 7+ messages in thread From: ori @ 2021-02-13 3:43 UTC (permalink / raw) To: 9front Quoth sl@stanleylieber.com: > sam.h says: > > /* > * BLOCKSIZE is relatively small to keep memory consumption down. > */ > > and: > > #define BLOCKSIZE 2048 > > and: > > #define STRSIZE (2*BLOCKSIZE) > > is there a compelling reason to keep STRSIZE so small, in this day and > age? > > problem case: > > users trying to paste in long articles from websites. > > sl > I'd be in favor of bumping STRSIZE up a lot. It only seems to be used as a "sane upper bound" on string length, so changing the one place that uses it as a stack buffer and over to malloc should be safe. Here's an untested diff that bumps it to 512 megabytes. diff -r ce98610ce572 sys/src/cmd/sam/address.c --- a/sys/src/cmd/sam/address.c Wed Feb 10 15:42:18 2021 -0800 +++ b/sys/src/cmd/sam/address.c Fri Feb 12 19:41:41 2021 -0800 @@ -143,14 +143,16 @@ int filematch(File *f, String *r) { - char *c, buf[STRSIZE+100]; + char *c, *s; String *t; c = Strtoc(&f->name); - sprint(buf, "%c%c%c %s\n", " '"[f->mod], + s = smprint("%c%c%c %s\n", " '"[f->mod], "-+"[f->rasp!=0], " ."[f==curfile], c); + if(s == nil) + error(Etoolong); free(c); - t = tmpcstr(buf); + t = tmpcstr(s); Strduplstr(&genstr, t); freetmpstr(t); /* A little dirty... */ @@ -159,6 +161,7 @@ bufreset(menu); bufinsert(menu, 0, genstr.s, genstr.n); compile(r); + free(s); return execute(menu, 0, menu->nc); } diff -r ce98610ce572 sys/src/cmd/sam/sam.h --- a/sys/src/cmd/sam/sam.h Wed Feb 10 15:42:18 2021 -0800 +++ b/sys/src/cmd/sam/sam.h Fri Feb 12 19:41:41 2021 -0800 @@ -18,7 +18,7 @@ #define INFINITY 0x7FFFFFFFL #define INCR 25 -#define STRSIZE (2*BLOCKSIZE) +#define STRSIZE (512<<20) typedef long Posn; /* file position or address */ typedef ushort Mod; /* modification number */ ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [9front] sam input line length limits 2021-02-13 3:43 ` ori @ 2021-02-13 3:55 ` sl 2021-02-13 16:25 ` Steve Simon 1 sibling, 0 replies; 7+ messages in thread From: sl @ 2021-02-13 3:55 UTC (permalink / raw) To: 9front > Here's an untested diff that bumps it to 512 > megabytes. thanks, testing it now. sl ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [9front] sam input line length limits 2021-02-13 3:43 ` ori 2021-02-13 3:55 ` sl @ 2021-02-13 16:25 ` Steve Simon 2021-02-13 20:06 ` ori 1 sibling, 1 reply; 7+ messages in thread From: Steve Simon @ 2021-02-13 16:25 UTC (permalink / raw) To: 9front Normally I would be very wary of changing sam it has served me well for many years, but I am with you on this one, it has bitten me in the past and its annoying. Re the patch: I am being pedantic, I know, but for completeness... free(c) should come before the test for s == nil, as it could lead to a memory leak. reordering the code fractionally fixes it. c = Strtoc(&f->name); - sprint(buf, "%c%c%c %s\n", " '"[f->mod], + s = smprint("%c%c%c %s\n", " '"[f->mod], "-+"[f->rasp!=0], " ."[f==curfile], c); + if(s == nil) + error(Etoolong); free(c); changes to c = Strtoc(&f->name); - sprint(buf, "%c%c%c %s\n", " '"[f->mod], + s = smprint("%c%c%c %s\n", " '"[f->mod], "-+"[f->rasp!=0], " ."[f==curfile], c); free(c); + if(s == nil) + error(Etoolong); ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [9front] sam input line length limits 2021-02-13 16:25 ` Steve Simon @ 2021-02-13 20:06 ` ori 2021-02-13 20:21 ` Stanley Lieber 0 siblings, 1 reply; 7+ messages in thread From: ori @ 2021-02-13 20:06 UTC (permalink / raw) To: 9front Quoth Steve Simon <steve@quintile.net>: > Normally I would be very wary of changing sam it has served > me well for many years, but I am with you on this one, > it has bitten me in the past and its annoying. > > Re the patch: > > I am being pedantic, I know, but for completeness... > free(c) should come before the test for s == nil, > as it could lead to a memory leak. reordering the code > fractionally fixes it. Yep, it definitely should. Thanks for looking. I'll actually *run* the code today, and see if I missed anything. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [9front] sam input line length limits 2021-02-13 20:06 ` ori @ 2021-02-13 20:21 ` Stanley Lieber 0 siblings, 0 replies; 7+ messages in thread From: Stanley Lieber @ 2021-02-13 20:21 UTC (permalink / raw) To: 9front On February 13, 2021 3:06:22 PM EST, ori@eigenstate.org wrote: >Quoth Steve Simon <steve@quintile.net>: >> Normally I would be very wary of changing sam it has served >> me well for many years, but I am with you on this one, >> it has bitten me in the past and its annoying. >> >> Re the patch: >> >> I am being pedantic, I know, but for completeness... >> free(c) should come before the test for s == nil, >> as it could lead to a memory leak. reordering the code >> fractionally fixes it. > >Yep, it definitely should. Thanks for looking. >I'll actually *run* the code today, and see if >I missed anything. > > installed it yesterday, no reports of ill effects so far. sl ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-02-14 14:45 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-02-13 0:45 [9front] sam input line length limits sl 2021-02-13 2:47 ` Nick Owens 2021-02-13 3:43 ` ori 2021-02-13 3:55 ` sl 2021-02-13 16:25 ` Steve Simon 2021-02-13 20:06 ` ori 2021-02-13 20:21 ` Stanley Lieber
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).