sulogin: use bb_error_msg instead of bb_info_msg; better message
[oweals/busybox.git] / networking / tftp.c
index 8e3b0a2dcede43a10a455d499e27b6ba47bd01c7..ad9308e524cf0c2fea93ee14b03be47300109d06 100644 (file)
@@ -117,8 +117,9 @@ struct globals {
        /* u16 TFTP_ERROR; u16 reason; both network-endian, then error text: */
        uint8_t error_pkt[4 + 32];
        struct passwd *pw;
-       /* used in tftpd_main(), a bit big for stack: */
-       char block_buf[TFTP_BLKSIZE_DEFAULT];
+       /* Used in tftpd_main() for initial packet */
+       /* Some HP PA-RISC firmware always sends fixed 516-byte requests */
+       char block_buf[516];
        char block_buf_tail[1];
 #if ENABLE_FEATURE_TFTP_PROGRESS_BAR
        off_t pos;
@@ -128,10 +129,9 @@ 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 INIT_G() do { } while (0)
+#define INIT_G() do { \
+       BUILD_BUG_ON(sizeof(G) > COMMON_BUFSIZE); \
+} while (0)
 
 #define G_error_pkt_reason (G.error_pkt[3])
 #define G_error_pkt_str    ((char*)(G.error_pkt + 4))
@@ -347,7 +347,6 @@ static int tftp_protocol(
                         * as if it is "block 0" */
                        block_nr = 0;
                }
-
        } else { /* tftp */
                /* Open file (must be after changing user) */
                local_fd = CMD_GET(option_mask32) ? STDOUT_FILENO : STDIN_FILENO;
@@ -811,7 +810,7 @@ int tftpd_main(int argc UNUSED_PARAM, char **argv)
        ) {
                goto err;
        }
-       /* Some HP PA-RISC firmware always sends fixed 512-byte requests,
+       /* Some HP PA-RISC firmware always sends fixed 516-byte requests,
         * with trailing garbage.
         * Support that by not requiring NUL to be the last byte (see above).
         * To make strXYZ() ops safe, force NUL termination: