stty: fix bb_common_bufsiz1 use in NOEXEC
function old new delta stty_main 1211 1221 +10 do_display 379 370 -9 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
035e71578e
commit
184c738582
@ -327,7 +327,7 @@ softlimit - noexec. spawner
|
|||||||
sort - noexec. runner
|
sort - noexec. runner
|
||||||
split - runner
|
split - runner
|
||||||
ssl_client - longterm
|
ssl_client - longterm
|
||||||
start-stop-daemon
|
start-stop-daemon - not noexec: uses bb_common_bufsiz1
|
||||||
stat - nofork candidate(needs fewer allocs)
|
stat - nofork candidate(needs fewer allocs)
|
||||||
strings - runner
|
strings - runner
|
||||||
stty - noexec. nofork candidate: has no allocs or opens except xmove_fd(xopen("-F DEVICE"),STDIN). tcsetattr(STDIN) is not a problem: it would work the same across processes sharing this fd
|
stty - noexec. nofork candidate: has no allocs or opens except xmove_fd(xopen("-F DEVICE"),STDIN). tcsetattr(STDIN) is not a problem: it would work the same across processes sharing this fd
|
||||||
|
@ -782,12 +782,12 @@ struct globals {
|
|||||||
unsigned max_col;
|
unsigned max_col;
|
||||||
/* Current position, to know when to wrap */
|
/* Current position, to know when to wrap */
|
||||||
unsigned current_col;
|
unsigned current_col;
|
||||||
char buf[10];
|
|
||||||
} FIX_ALIASING;
|
} FIX_ALIASING;
|
||||||
#define G (*(struct globals*)bb_common_bufsiz1)
|
#define G (*(struct globals*)bb_common_bufsiz1)
|
||||||
#define INIT_G() do { \
|
#define INIT_G() do { \
|
||||||
G.device_name = bb_msg_standard_input; \
|
G.device_name = bb_msg_standard_input; \
|
||||||
G.max_col = 80; \
|
G.max_col = 80; \
|
||||||
|
G.current_col = 0; /* we are noexec, must clear */ \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
static void set_speed_or_die(enum speed_setting type, const char *arg,
|
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) {
|
for (i = 0; i != CIDX_min; ++i) {
|
||||||
char ch;
|
char ch;
|
||||||
|
char buf10[10];
|
||||||
|
|
||||||
/* If swtch is the same as susp, don't print both */
|
/* If swtch is the same as susp, don't print both */
|
||||||
#if VSWTCH == VSUSP
|
#if VSWTCH == VSUSP
|
||||||
if (i == CIDX_swtch)
|
if (i == CIDX_swtch)
|
||||||
@ -1033,10 +1035,10 @@ static void do_display(const struct termios *mode, int all)
|
|||||||
#endif
|
#endif
|
||||||
ch = mode->c_cc[control_info[i].offset];
|
ch = mode->c_cc[control_info[i].offset];
|
||||||
if (ch == _POSIX_VDISABLE)
|
if (ch == _POSIX_VDISABLE)
|
||||||
strcpy(G.buf, "<undef>");
|
strcpy(buf10, "<undef>");
|
||||||
else
|
else
|
||||||
visible(ch, G.buf, 0);
|
visible(ch, buf10, 0);
|
||||||
wrapf("%s = %s;", nth_string(control_name, i), G.buf);
|
wrapf("%s = %s;", nth_string(control_name, i), buf10);
|
||||||
}
|
}
|
||||||
#if VEOF == VMIN
|
#if VEOF == VMIN
|
||||||
if ((mode->c_lflag & ICANON) == 0)
|
if ((mode->c_lflag & ICANON) == 0)
|
||||||
|
@ -79,6 +79,7 @@ Misc options:
|
|||||||
//config: -N|--nicelevel N
|
//config: -N|--nicelevel N
|
||||||
|
|
||||||
//applet:IF_START_STOP_DAEMON(APPLET_ODDNAME(start-stop-daemon, start_stop_daemon, BB_DIR_SBIN, BB_SUID_DROP, start_stop_daemon))
|
//applet:IF_START_STOP_DAEMON(APPLET_ODDNAME(start-stop-daemon, start_stop_daemon, BB_DIR_SBIN, BB_SUID_DROP, start_stop_daemon))
|
||||||
|
/* not NOEXEC: uses bb_common_bufsiz1 */
|
||||||
|
|
||||||
//kbuild:lib-$(CONFIG_START_STOP_DAEMON) += start_stop_daemon.o
|
//kbuild:lib-$(CONFIG_START_STOP_DAEMON) += start_stop_daemon.o
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user