fixed labuf overflow (caused by, for example, very long variable expansions)
authorEdward Wang <edward@ucbvax.Berkeley.EDU>
Fri, 15 Jan 1988 19:33:29 +0000 (11:33 -0800)
committerEdward Wang <edward@ucbvax.Berkeley.EDU>
Fri, 15 Jan 1988 19:33:29 +0000 (11:33 -0800)
SCCS-vsn: bin/csh/dol.c 5.5
SCCS-vsn: bin/csh/lex.c 5.5

usr/src/bin/csh/dol.c
usr/src/bin/csh/lex.c

index b9c4334..19a18d5 100644 (file)
@@ -5,7 +5,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char *sccsid = "@(#)dol.c       5.4 (Berkeley) %G%";
+static char *sccsid = "@(#)dol.c       5.5 (Berkeley) %G%";
 #endif
 
 #include "sh.h"
 #endif
 
 #include "sh.h"
@@ -521,6 +521,8 @@ setDolp(cp)
        } else
                addla(cp);
        dolp = "";
        } else
                addla(cp);
        dolp = "";
+       if (err)
+               error(err);
 }
 
 unDredc(c)
 }
 
 unDredc(c)
index d5a5a5a..e185f58 100644 (file)
@@ -5,7 +5,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char *sccsid = "@(#)lex.c       5.4 (Berkeley) %G%";
+static char *sccsid = "@(#)lex.c       5.5 (Berkeley) %G%";
 #endif
 
 #include "sh.h"
 #endif
 
 #include "sh.h"
@@ -426,8 +426,8 @@ addla(cp)
 {
        char buf[BUFSIZ];
 
 {
        char buf[BUFSIZ];
 
-       if (lap != 0 && strlen(cp) + strlen(lap) >= sizeof (labuf) - 4) {
-               seterr("Expansion buf ovflo");
+       if (strlen(cp) + (lap ? strlen(lap) : 0) >= sizeof (labuf) - 4) {
+               seterr("Expansion buffer overflow");
                return;
        }
        if (lap)
                return;
        }
        if (lap)