diff options
author | jilles <jilles@FreeBSD.org> | 2010-12-26 13:25:47 +0000 |
---|---|---|
committer | jilles <jilles@FreeBSD.org> | 2010-12-26 13:25:47 +0000 |
commit | de73f385a5709ba788137d94801ead1014f1c5f0 (patch) | |
tree | 02dc00ec14f40f9ed9b75e0e6b62988d28b2ba9f /bin/sh/memalloc.h | |
parent | 290c1ef87ffbfdb591c830fd2874a87241390022 (diff) | |
download | FreeBSD-src-de73f385a5709ba788137d94801ead1014f1c5f0.zip FreeBSD-src-de73f385a5709ba788137d94801ead1014f1c5f0.tar.gz |
sh: Allow arbitrary large numbers in CHECKSTRSPACE.
Reduce "stack string" API somewhat and simplify code.
Add a check for integer overflow of the "stack string" length (probably
incomplete).
Diffstat (limited to 'bin/sh/memalloc.h')
-rw-r--r-- | bin/sh/memalloc.h | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/bin/sh/memalloc.h b/bin/sh/memalloc.h index da23a95..fcdd5ba 100644 --- a/bin/sh/memalloc.h +++ b/bin/sh/memalloc.h @@ -55,10 +55,9 @@ pointer stalloc(int); void stunalloc(pointer); void setstackmark(struct stackmark *); void popstackmark(struct stackmark *); -void growstackblock(void); void grabstackblock(int); char *growstackstr(void); -char *makestrspace(void); +char *makestrspace(int); void ungrabstackstr(char *, char *); char *stputbin(const char *data, int len, char *p); char *stputs(const char *data, char *p); @@ -69,7 +68,7 @@ char *stputs(const char *data, char *p); #define stackblocksize() stacknleft #define STARTSTACKSTR(p) p = stackblock(), sstrnleft = stackblocksize() #define STPUTC(c, p) (--sstrnleft >= 0? (*p++ = (c)) : (p = growstackstr(), --sstrnleft, *p++ = (c))) -#define CHECKSTRSPACE(n, p) { if (sstrnleft < n) p = makestrspace(); } +#define CHECKSTRSPACE(n, p) { if (sstrnleft < n) p = makestrspace(n); } #define USTPUTC(c, p) (--sstrnleft, *p++ = (c)) /* * STACKSTRNUL's use is where we want to be able to turn a stack |