find: add zeroing of G.xxx; ftpd - remove extraneous zeroing of G.xxx
authorDenys Vlasenko <vda.linux@googlemail.com>
Wed, 30 Sep 2009 00:39:57 +0000 (02:39 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 30 Sep 2009 00:39:57 +0000 (02:39 +0200)
Brought "G trick" to the same shape in a few more places.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
coreutils/dd.c
coreutils/ls.c
findutils/find.c
networking/ftpd.c
networking/telnet.c

index 627e7e7b54ea0793e28e6d2cd21a1343b20b83e8..c5c9476afc483e6dce789a264a271b977a98e45f 100644 (file)
@@ -36,8 +36,10 @@ struct globals {
        off_t out_full, out_part, in_full, in_part;
 };
 #define G (*(struct globals*)&bb_common_bufsiz1)
-/* We have to zero it out because of NOEXEC */
-#define INIT_G() memset(&G, 0, sizeof(G))
+#define INIT_G() do { \
+       /* we have to zero it out because of NOEXEC */ \
+       memset(&G, 0, sizeof(G)); \
+} while (0)
 
 
 static void dd_output_status(int UNUSED_PARAM cur_signal)
index 827b3508930f0366f20ec4db072764088a7ad2d0..19d38049cc0af3e9f0d59f4b4724982a4109962d 100644 (file)
@@ -264,15 +264,15 @@ struct globals {
 };
 #define G (*(struct globals*)&bb_common_bufsiz1)
 #if ENABLE_FEATURE_LS_COLOR
-#define show_color     (G.show_color    )
+# define show_color     (G.show_color    )
 #else
 enum { show_color = 0 };
 #endif
-#define exit_code      (G.exit_code     )
-#define all_fmt        (G.all_fmt       )
+#define exit_code       (G.exit_code     )
+#define all_fmt         (G.all_fmt       )
 #if ENABLE_FEATURE_AUTOWIDTH
-#define tabstops       (G.tabstops      )
-#define terminal_width (G.terminal_width)
+# define tabstops       (G.tabstops      )
+# define terminal_width (G.terminal_width)
 #else
 enum {
        tabstops = COLUMN_GAP,
@@ -280,8 +280,8 @@ enum {
 };
 #endif
 #define current_time_t (G.current_time_t)
-/* memset: we have to zero it out because of NOEXEC */
 #define INIT_G() do { \
+       /* we have to zero it out because of NOEXEC */ \
        memset(&G, 0, sizeof(G)); \
        IF_FEATURE_AUTOWIDTH(tabstops = COLUMN_GAP;) \
        IF_FEATURE_AUTOWIDTH(terminal_width = TERMINAL_WIDTH;) \
index 6f7be4fc250563a82fd2f3c321e81693afa075c3..76cd18c1acef7206fd0d0663acaf4bd177154d4c 100644 (file)
@@ -109,6 +109,8 @@ struct globals {
        struct G_sizecheck { \
                char G_sizecheck[sizeof(G) > COMMON_BUFSIZE ? -1 : 1]; \
        }; \
+       /* we have to zero it out because of NOEXEC */ \
+       memset(&G, 0, offsetof(struct globals, need_print)); \
        G.need_print = 1; \
        G.recurse_flags = ACTION_RECURSE; \
 } while (0)
index a8687fbdaa7ae652e84e1391ec8906b5bf2a22b4..70a353312e5c2c1262410670d585c8c2eace20c7 100644 (file)
@@ -662,7 +662,7 @@ popen_ls(const char *opt)
                execv(bb_busybox_exec_path + 1, (char**) argv);
                _exit(127);
 #else
-               memset(&G, 0, sizeof(G));
+               /* memset(&G, 0, sizeof(G)); - ls_main does it */
                exit(ls_main(ARRAY_SIZE(argv) - 1, (char**) argv));
 #endif
        }
@@ -1114,7 +1114,7 @@ int ftpd_main(int argc UNUSED_PARAM, char **argv)
 /* --group-directories-first would be nice, but ls don't do that yet */
                xchdir(argv[2]);
                argv[2] = (char*)"--";
-               memset(&G, 0, sizeof(G));
+               /* memset(&G, 0, sizeof(G)); - ls_main does it */
                return ls_main(argc, argv);
        }
 #endif
index cc994250c81303db69d0ef465d67f22392d8bbd0..77e17479d75f0dc71054b1671983bcab75a86cd9 100644 (file)
@@ -77,11 +77,10 @@ struct globals {
        struct termios termios_raw;
 };
 #define G (*(struct globals*)&bb_common_bufsiz1)
-void BUG_telnet_globals_too_big(void);
 #define INIT_G() do { \
-       if (sizeof(G) > COMMON_BUFSIZE) \
-               BUG_telnet_globals_too_big(); \
-       /* memset(&G, 0, sizeof G); - already is */ \
+       struct G_sizecheck { \
+               char G_sizecheck[sizeof(G) > COMMON_BUFSIZE ? -1 : 1]; \
+       }; \
 } while (0)
 
 /* Function prototypes */