diff options
-rw-r--r-- | coreutils/du.c | 3 | ||||
-rw-r--r-- | coreutils/expr.c | 3 | ||||
-rw-r--r-- | coreutils/tail.c | 3 | ||||
-rw-r--r-- | include/libbb.h | 9 | ||||
-rw-r--r-- | miscutils/hdparm.c | 3 | ||||
-rw-r--r-- | networking/zcip.c | 2 | ||||
-rw-r--r-- | procps/top.c | 2 | ||||
-rw-r--r-- | runit/runsvdir.c | 3 | ||||
-rw-r--r-- | util-linux/mdev.c | 5 | ||||
-rw-r--r-- | util-linux/mount.c | 3 | ||||
-rw-r--r-- | util-linux/swaponoff.c | 3 |
11 files changed, 33 insertions, 6 deletions
diff --git a/coreutils/du.c b/coreutils/du.c index b8bbe3d9e..34a549f02 100644 --- a/coreutils/du.c +++ b/coreutils/du.c @@ -88,6 +88,7 @@ struct globals { dev_t dir_dev; } FIX_ALIASING; #define G (*(struct globals*)&bb_common_bufsiz1) +#define INIT_G() do { } while (0) static void print(unsigned long size, const char *filename) @@ -193,6 +194,8 @@ int du_main(int argc UNUSED_PARAM, char **argv) int slink_depth_save; unsigned opt; + INIT_G(); + #if ENABLE_FEATURE_HUMAN_READABLE IF_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(G.disp_hr = 1024;) IF_NOT_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(G.disp_hr = 512;) diff --git a/coreutils/expr.c b/coreutils/expr.c index 24e75b556..c986f9327 100644 --- a/coreutils/expr.c +++ b/coreutils/expr.c @@ -100,6 +100,7 @@ struct globals { char **args; } FIX_ALIASING; #define G (*(struct globals*)&bb_common_bufsiz1) +#define INIT_G() do { } while (0) /* forward declarations */ static VALUE *eval(void); @@ -519,6 +520,8 @@ int expr_main(int argc UNUSED_PARAM, char **argv) { VALUE *v; + INIT_G(); + xfunc_error_retval = 2; /* coreutils compat */ G.args = argv + 1; if (*G.args == NULL) { diff --git a/coreutils/tail.c b/coreutils/tail.c index 43cecbd97..b376ec863 100644 --- a/coreutils/tail.c +++ b/coreutils/tail.c @@ -62,6 +62,7 @@ struct globals { bool exitcode; } FIX_ALIASING; #define G (*(struct globals*)&bb_common_bufsiz1) +#define INIT_G() do { } while (0) static void tail_xprint_header(const char *fmt, const char *filename) { @@ -120,6 +121,8 @@ int tail_main(int argc, char **argv) int *fds; const char *fmt; + INIT_G(); + #if ENABLE_INCLUDE_SUSv2 || ENABLE_FEATURE_FANCY_TAIL /* Allow legacy syntax of an initial numeric option without -n. */ if (argv[1] && (argv[1][0] == '+' || argv[1][0] == '-') diff --git a/include/libbb.h b/include/libbb.h index feae85259..f79b69365 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -684,10 +684,13 @@ void *malloc_or_warn(size_t size) FAST_FUNC RETURNS_MALLOC; void *xmalloc(size_t size) FAST_FUNC RETURNS_MALLOC; void *xzalloc(size_t size) FAST_FUNC RETURNS_MALLOC; void *xrealloc(void *old, size_t size) FAST_FUNC; -/* After xrealloc_vector(v, 4, idx) it's ok to use +/* After v = xrealloc_vector(v, SHIFT, idx) it's ok to use * at least v[idx] and v[idx+1], for all idx values. - * shift specifies how many new elements are added (1: 2, 2: 4... 8: 256...) - * when all elements are used up. New elements are zeroed out. */ + * SHIFT specifies how many new elements are added (1:2, 2:4, ..., 8:256...) + * when all elements are used up. New elements are zeroed out. + * xrealloc_vector(v, SHIFT, idx) *MUST* be called with consecutive IDXs - + * skipping an index is a bad bug - it may miss a realloc! + */ #define xrealloc_vector(vector, shift, idx) \ xrealloc_vector_helper((vector), (sizeof((vector)[0]) << 8) + (shift), (idx)) void* xrealloc_vector_helper(void *vector, unsigned sizeof_and_shift, int idx) FAST_FUNC; diff --git a/miscutils/hdparm.c b/miscutils/hdparm.c index f30e7dec6..a97f3e7b5 100644 --- a/miscutils/hdparm.c +++ b/miscutils/hdparm.c @@ -433,6 +433,7 @@ struct BUG_G_too_big { #define hwif_data (G.hwif_data ) #define hwif_ctrl (G.hwif_ctrl ) #define hwif_irq (G.hwif_irq ) +#define INIT_G() do { } while (0) /* Busybox messages and functions */ @@ -2059,6 +2060,8 @@ int hdparm_main(int argc, char **argv) int c; int flagcount = 0; + INIT_G(); + while ((c = getopt(argc, argv, hdparm_options)) >= 0) { flagcount++; IF_FEATURE_HDPARM_GET_IDENTITY(get_IDentity |= (c == 'I')); diff --git a/networking/zcip.c b/networking/zcip.c index 8a35eca5d..7314ff8db 100644 --- a/networking/zcip.c +++ b/networking/zcip.c @@ -91,6 +91,7 @@ struct globals { #define G (*(struct globals*)&bb_common_bufsiz1) #define saddr (G.saddr ) #define eth_addr (G.eth_addr) +#define INIT_G() do { } while (0) /** @@ -223,6 +224,7 @@ int zcip_main(int argc UNUSED_PARAM, char **argv) #define verbose (L.verbose ) memset(&L, 0, sizeof(L)); + INIT_G(); #define FOREGROUND (opts & 1) #define QUIT (opts & 2) diff --git a/procps/top.c b/procps/top.c index 011bbf183..15eb624cc 100644 --- a/procps/top.c +++ b/procps/top.c @@ -126,7 +126,6 @@ struct BUG_bad_size { char BUG_G_too_big[sizeof(G) <= COMMON_BUFSIZE ? 1 : -1]; char BUG_line_buf_too_small[LINE_BUF_SIZE > 80 ? 1 : -1]; }; -#define INIT_G() do { } while (0) #define top (G.top ) #define ntop (G.ntop ) #define sort_field (G.sort_field ) @@ -143,6 +142,7 @@ struct BUG_bad_size { #define num_cpus (G.num_cpus ) #define total_pcpu (G.total_pcpu ) #define line_buf (G.line_buf ) +#define INIT_G() do { } while (0) enum { OPT_d = (1 << 0), diff --git a/runit/runsvdir.c b/runit/runsvdir.c index 9495a2a4f..32526cf4c 100644 --- a/runit/runsvdir.c +++ b/runit/runsvdir.c @@ -75,8 +75,7 @@ struct globals { #define logpipe (G.logpipe ) #define pfd (G.pfd ) #define stamplog (G.stamplog ) -#define INIT_G() do { \ -} while (0) +#define INIT_G() do { } while (0) static void fatal2_cannot(const char *m1, const char *m2) { diff --git a/util-linux/mdev.c b/util-linux/mdev.c index 27b35572d..c56741b08 100644 --- a/util-linux/mdev.c +++ b/util-linux/mdev.c @@ -173,6 +173,8 @@ struct globals { char *subsystem; } FIX_ALIASING; #define G (*(struct globals*)&bb_common_bufsiz1) +#define INIT_G() do { } while (0) + /* Prevent infinite loops in /sys symlinks */ #define MAX_SYSFS_DEPTH 3 @@ -180,6 +182,7 @@ struct globals { /* We use additional 64+ bytes in make_device() */ #define SCRATCH_SIZE 80 + /* Builds an alias path. * This function potentionally reallocates the alias parameter. * Only used for ENABLE_FEATURE_MDEV_RENAME @@ -613,6 +616,8 @@ int mdev_main(int argc UNUSED_PARAM, char **argv) { RESERVE_CONFIG_BUFFER(temp, PATH_MAX + SCRATCH_SIZE); + INIT_G(); + /* We can be called as hotplug helper */ /* Kernel cannot provide suitable stdio fds for us, do it ourself */ bb_sanitize_stdio(); diff --git a/util-linux/mount.c b/util-linux/mount.c index b51ab1782..56276ef01 100644 --- a/util-linux/mount.c +++ b/util-linux/mount.c @@ -339,6 +339,7 @@ enum { GETMNTENT_BUFSIZE = COMMON_BUFSIZE - offsetof(struct globals, getmntent_b #endif #define fslist (G.fslist ) #define getmntent_buf (G.getmntent_buf ) +#define INIT_G() do { } while (0) #if ENABLE_FEATURE_MTAB_SUPPORT /* @@ -1944,6 +1945,8 @@ int mount_main(int argc UNUSED_PARAM, char **argv) IF_DESKTOP(int nonroot = ) sanitize_env_if_suid(); + INIT_G(); + // Parse long options, like --bind and --move. Note that -o option // and --option are synonymous. Yes, this means --remount,rw works. for (i = j = 1; argv[i]; i++) { diff --git a/util-linux/swaponoff.c b/util-linux/swaponoff.c index e53e24c71..b3057b309 100644 --- a/util-linux/swaponoff.c +++ b/util-linux/swaponoff.c @@ -48,6 +48,7 @@ struct globals { #else #define g_flags 0 #endif +#define INIT_G() do { } while (0) static int swap_enable_disable(char *device) { @@ -111,6 +112,8 @@ int swap_on_off_main(int argc UNUSED_PARAM, char **argv) { int ret; + INIT_G(); + #if !ENABLE_FEATURE_SWAPON_PRI ret = getopt32(argv, "a"); #else |