*: more BUILD_BUG_ON conversions
authorDenys Vlasenko <vda.linux@googlemail.com>
Tue, 13 Oct 2015 15:17:34 +0000 (17:17 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 13 Oct 2015 15:17:34 +0000 (17:17 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
archival/libarchive/decompress_gunzip.c
editors/sed.c
findutils/find.c
findutils/grep.c
miscutils/hdparm.c
miscutils/taskset.c
networking/inetd.c
networking/nbd-client.c
networking/telnet.c
procps/top.c

index 1360abef7d202ef2bc6e354a379dbae68a3887ff..7b6f459347a879094f3cb6c444ba312dc70e32fd 100644 (file)
@@ -1118,9 +1118,8 @@ static int check_header_gzip(STATE_PARAM transformer_state_t *xstate)
                        uint8_t os_flags_UNUSED;
                } PACKED formatted;
        } header;
-       struct BUG_header {
-               char BUG_header[sizeof(header) == 8 ? 1 : -1];
-       };
+
+       BUILD_BUG_ON(sizeof(header) != 8);
 
        /*
         * Rewind bytebuffer. We use the beginning because the header has 8
index 7bbf820d8571627ef127d771cb4e67aac4938580..a8c35388b0fcbd0d1342e37a661f3c2fc19fddb3 100644 (file)
@@ -162,10 +162,8 @@ struct globals {
        } pipeline;
 } FIX_ALIASING;
 #define G (*(struct globals*)&bb_common_bufsiz1)
-struct BUG_G_too_big {
-       char BUG_G_too_big[sizeof(G) <= COMMON_BUFSIZE ? 1 : -1];
-};
 #define INIT_G() do { \
+       BUILD_BUG_ON(sizeof(G) > COMMON_BUFSIZE); \
        G.sed_cmd_tail = &G.sed_cmd_head; \
 } while (0)
 
@@ -501,9 +499,11 @@ static const char *parse_cmd_args(sed_cmd_t *sed_cmd, const char *cmdstr)
                IDX_rbrace,
                IDX_nul
        };
-       struct chk { char chk[sizeof(cmd_letters)-1 == IDX_nul ? 1 : -1]; };
+       unsigned idx;
+
+       BUILD_BUG_ON(sizeof(cmd_letters)-1 != IDX_nul);
 
-       unsigned idx = strchrnul(cmd_letters, sed_cmd->cmd) - cmd_letters;
+       idx = strchrnul(cmd_letters, sed_cmd->cmd) - cmd_letters;
 
        /* handle (s)ubstitution command */
        if (idx == IDX_s) {
index bd7ccc323f32876805ed7efbbc92bc0b7cf5004f..5bd75353676668aabfdbb4d1260466b78d183e65 100644 (file)
@@ -423,9 +423,7 @@ struct globals {
 } FIX_ALIASING;
 #define G (*(struct globals*)&bb_common_bufsiz1)
 #define INIT_G() do { \
-       struct G_sizecheck { \
-               char G_sizecheck[sizeof(G) > COMMON_BUFSIZE ? -1 : 1]; \
-       }; \
+       BUILD_BUG_ON(sizeof(G) > COMMON_BUFSIZE); \
        /* we have to zero it out because of NOEXEC */ \
        memset(&G, 0, sizeof(G)); \
        IF_FEATURE_FIND_MAXDEPTH(G.minmaxdepth[1] = INT_MAX;) \
index b9621384ec78e5054d4b04dc4d5addf123f1af0a..10b69275a9a18fdb913c6c02bd48c8b48592037b 100644 (file)
@@ -203,9 +203,7 @@ struct globals {
 } FIX_ALIASING;
 #define G (*(struct globals*)&bb_common_bufsiz1)
 #define INIT_G() do { \
-       struct G_sizecheck { \
-               char G_sizecheck[sizeof(G) > COMMON_BUFSIZE ? -1 : 1]; \
-       }; \
+       BUILD_BUG_ON(sizeof(G) > COMMON_BUFSIZE); \
 } while (0)
 #define max_matches       (G.max_matches         )
 #if !ENABLE_EXTRA_COMPAT
index 9c486e7aa24899a43bff22c105d56168b9d54819..8e201ac358573372ddc47ebe49a5cd92274a23b1 100644 (file)
@@ -368,9 +368,6 @@ struct globals {
 #endif
 } FIX_ALIASING;
 #define G (*(struct globals*)&bb_common_bufsiz1)
-struct BUG_G_too_big {
-       char BUG_G_too_big[sizeof(G) <= COMMON_BUFSIZE ? 1 : -1];
-};
 #define get_identity       (G.get_identity           )
 #define get_geom           (G.get_geom               )
 #define do_flush           (G.do_flush               )
@@ -433,7 +430,9 @@ 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)
+#define INIT_G() do { \
+       BUILD_BUG_ON(sizeof(G) > COMMON_BUFSIZE); \
+} while (0)
 
 
 /* Busybox messages and functions */
index 2646e1dab9446cbeb32087e96fcc1dab86386672..100b1d926fe3df61e564baf0220334412fb36729 100644 (file)
@@ -75,12 +75,10 @@ static char *from_cpuset(cpu_set_t *mask)
 #define TASKSET_PRINTF_MASK "%llx"
 static unsigned long long from_cpuset(cpu_set_t *mask)
 {
-       struct BUG_CPU_SETSIZE_is_too_small {
-               char BUG_CPU_SETSIZE_is_too_small[
-                       CPU_SETSIZE < sizeof(int) ? -1 : 1];
-       };
        char *p = (void*)mask;
 
+       BUILD_BUG_ON(CPU_SETSIZE < sizeof(int));
+
        /* Take the least significant bits. Careful!
         * Consider both CPU_SETSIZE=4 and CPU_SETSIZE=1024 cases
         */
index dce5a088593976e0a53e2f7adcacbd93a2e44a14..243165a0728a5b09fbb364a2a65b844566ae8a09 100644 (file)
@@ -329,9 +329,6 @@ struct globals {
 } FIX_ALIASING;
 #define G (*(struct globals*)&bb_common_bufsiz1)
 enum { LINE_SIZE = COMMON_BUFSIZE - offsetof(struct globals, line) };
-struct BUG_G_too_big {
-       char BUG_G_too_big[sizeof(G) <= COMMON_BUFSIZE ? 1 : -1];
-};
 #define rlim_ofile_cur  (G.rlim_ofile_cur )
 #define rlim_ofile      (G.rlim_ofile     )
 #define serv_list       (G.serv_list      )
@@ -352,6 +349,7 @@ struct BUG_G_too_big {
 #define allsock         (G.allsock        )
 #define line            (G.line           )
 #define INIT_G() do { \
+       BUILD_BUG_ON(sizeof(G) > COMMON_BUFSIZE); \
        rlim_ofile_cur = OPEN_MAX; \
        global_queuelen = 128; \
        config_filename = "/etc/inetd.conf"; \
index a601430b69965ab54ef293edbf9351dcf8692260..70869d6519fbb4cb9880d9cf98db2b6569560875 100644 (file)
@@ -57,9 +57,8 @@ int nbdclient_main(int argc, char **argv)
                uint32_t flags;
                char data[124];
        } nbd_header;
-       struct bug_check {
-               char c[offsetof(struct nbd_header_t, data) == 8+8+8+4 ? 1 : -1];
-       };
+
+       BUILD_BUG_ON(offsetof(struct nbd_header_t, data) != 8+8+8+4);
 
        // Parse command line stuff (just a stub now)
        if (argc != 4)
index 3bb6fb1ba36f450072db55735ca19f9965c82927..944cf1bd62aab4456fda9a97014d8394bb1548f6 100644 (file)
@@ -110,9 +110,7 @@ struct globals {
 } FIX_ALIASING;
 #define G (*(struct globals*)&bb_common_bufsiz1)
 #define INIT_G() do { \
-       struct G_sizecheck { \
-               char G_sizecheck[sizeof(G) > COMMON_BUFSIZE ? -1 : 1]; \
-       }; \
+       BUILD_BUG_ON(sizeof(G) > COMMON_BUFSIZE); \
 } while (0)
 
 
index 3d67c3cfd6e0eae9b826840b918595cc4c811619..9a3f171acaf816ff8033ed684ab4327e978a61b0 100644 (file)
@@ -184,10 +184,6 @@ struct globals {
 }; //FIX_ALIASING; - large code growth
 enum { LINE_BUF_SIZE = COMMON_BUFSIZE - offsetof(struct globals, line_buf) };
 #define G (*(struct globals*)&bb_common_bufsiz1)
-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 top              (G.top               )
 #define ntop             (G.ntop              )
 #define sort_field       (G.sort_field        )
@@ -204,7 +200,10 @@ 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)
+#define INIT_G() do { \
+       BUILD_BUG_ON(sizeof(G) > COMMON_BUFSIZE); \
+       BUILD_BUG_ON(LINE_BUF_SIZE <= 80); \
+} while (0)
 
 enum {
        OPT_d = (1 << 0),