stty: fix bb_common_bufsiz1 use in NOEXEC
[oweals/busybox.git] / coreutils / stty.c
index d09f0e4531c3d09a4bbe52d69fff20b85cdf1e75..2292fa5eeb57404ec429a94227916935c323cca5 100644 (file)
@@ -782,12 +782,12 @@ struct globals {
        unsigned max_col;
        /* Current position, to know when to wrap */
        unsigned current_col;
-       char buf[10];
 } FIX_ALIASING;
 #define G (*(struct globals*)bb_common_bufsiz1)
 #define INIT_G() do { \
        G.device_name = bb_msg_standard_input; \
        G.max_col = 80; \
+       G.current_col = 0; /* we are noexec, must clear */ \
 } while (0)
 
 static void set_speed_or_die(enum speed_setting type, const char *arg,
@@ -1018,6 +1018,8 @@ static void do_display(const struct termios *mode, int all)
 
        for (i = 0; i != CIDX_min; ++i) {
                char ch;
+               char buf10[10];
+
                /* If swtch is the same as susp, don't print both */
 #if VSWTCH == VSUSP
                if (i == CIDX_swtch)
@@ -1033,10 +1035,10 @@ static void do_display(const struct termios *mode, int all)
 #endif
                ch = mode->c_cc[control_info[i].offset];
                if (ch == _POSIX_VDISABLE)
-                       strcpy(G.buf, "<undef>");
+                       strcpy(buf10, "<undef>");
                else
-                       visible(ch, G.buf, 0);
-               wrapf("%s = %s;", nth_string(control_name, i), G.buf);
+                       visible(ch, buf10, 0);
+               wrapf("%s = %s;", nth_string(control_name, i), buf10);
        }
 #if VEOF == VMIN
        if ((mode->c_lflag & ICANON) == 0)