diff options
| author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-03-21 18:29:01 +0000 |
|---|---|---|
| committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-03-21 18:29:01 +0000 |
| commit | 4824ccae8ef0896b9fcb2a15ffa666d3c2aa8a89 (patch) | |
| tree | 305bc282125eeb2c1cbfeb89fa870be634c996bc | |
| parent | 0dc490bda21c85aee9b7462d0cf401d03a94c06d (diff) | |
| download | busybox-w32-4824ccae8ef0896b9fcb2a15ffa666d3c2aa8a89.tar.gz busybox-w32-4824ccae8ef0896b9fcb2a15ffa666d3c2aa8a89.tar.bz2 busybox-w32-4824ccae8ef0896b9fcb2a15ffa666d3c2aa8a89.zip | |
*: fix build problems found with randomconfig
| -rw-r--r-- | networking/tftp.c | 73 | ||||
| -rwxr-xr-x | scripts/trylink | 2 | ||||
| -rw-r--r-- | util-linux/Config.in | 1 |
3 files changed, 42 insertions, 34 deletions
diff --git a/networking/tftp.c b/networking/tftp.c index bd9dc9b63..143279757 100644 --- a/networking/tftp.c +++ b/networking/tftp.c | |||
| @@ -25,10 +25,11 @@ | |||
| 25 | 25 | ||
| 26 | #if ENABLE_FEATURE_TFTP_GET || ENABLE_FEATURE_TFTP_PUT | 26 | #if ENABLE_FEATURE_TFTP_GET || ENABLE_FEATURE_TFTP_PUT |
| 27 | 27 | ||
| 28 | #define TFTP_BLKSIZE_DEFAULT 512 /* according to RFC 1350, don't change */ | 28 | #define TFTP_BLKSIZE_DEFAULT 512 /* according to RFC 1350, don't change */ |
| 29 | #define TFTP_TIMEOUT_MS 50 | 29 | #define TFTP_BLKSIZE_DEFAULT_STR "512" |
| 30 | #define TFTP_MAXTIMEOUT_MS 2000 | 30 | #define TFTP_TIMEOUT_MS 50 |
| 31 | #define TFTP_NUM_RETRIES 12 /* number of backed-off retries */ | 31 | #define TFTP_MAXTIMEOUT_MS 2000 |
| 32 | #define TFTP_NUM_RETRIES 12 /* number of backed-off retries */ | ||
| 32 | 33 | ||
| 33 | /* opcodes we support */ | 34 | /* opcodes we support */ |
| 34 | #define TFTP_RRQ 1 | 35 | #define TFTP_RRQ 1 |
| @@ -181,7 +182,7 @@ static int tftp_protocol( | |||
| 181 | int open_mode, local_fd; | 182 | int open_mode, local_fd; |
| 182 | int retries, waittime_ms; | 183 | int retries, waittime_ms; |
| 183 | int io_bufsize = blksize + 4; | 184 | int io_bufsize = blksize + 4; |
| 184 | char *cp = cp; /* for compiler */ | 185 | char *cp; |
| 185 | /* Can't use RESERVE_CONFIG_BUFFER here since the allocation | 186 | /* Can't use RESERVE_CONFIG_BUFFER here since the allocation |
| 186 | * size varies meaning BUFFERS_GO_ON_STACK would fail */ | 187 | * size varies meaning BUFFERS_GO_ON_STACK would fail */ |
| 187 | /* We must keep the transmit and receive buffers seperate */ | 188 | /* We must keep the transmit and receive buffers seperate */ |
| @@ -193,6 +194,7 @@ static int tftp_protocol( | |||
| 193 | setsockopt_reuseaddr(socket_fd); | 194 | setsockopt_reuseaddr(socket_fd); |
| 194 | 195 | ||
| 195 | block_nr = 1; | 196 | block_nr = 1; |
| 197 | cp = xbuf + 2; | ||
| 196 | 198 | ||
| 197 | if (!ENABLE_TFTP || our_lsa) { | 199 | if (!ENABLE_TFTP || our_lsa) { |
| 198 | /* tftpd */ | 200 | /* tftpd */ |
| @@ -216,17 +218,6 @@ static int tftp_protocol( | |||
| 216 | block_nr = 0; | 218 | block_nr = 0; |
| 217 | } | 219 | } |
| 218 | 220 | ||
| 219 | #if ENABLE_FEATURE_TFTP_BLOCKSIZE | ||
| 220 | if (blksize != TFTP_BLKSIZE_DEFAULT) { | ||
| 221 | /* Create and send OACK packet */ | ||
| 222 | /* For the download case, block_nr is still 1 - | ||
| 223 | * we expect 1st ACK from peer to be for (block_nr-1), | ||
| 224 | * that is, for "block 0" which is our OACK pkt */ | ||
| 225 | opcode = TFTP_OACK; | ||
| 226 | cp = xbuf + 2; | ||
| 227 | /* to be continued, see below */ | ||
| 228 | } | ||
| 229 | #endif | ||
| 230 | if (user_opt) { | 221 | if (user_opt) { |
| 231 | struct passwd *pw = getpwnam(user_opt); | 222 | struct passwd *pw = getpwnam(user_opt); |
| 232 | if (!pw) | 223 | if (!pw) |
| @@ -263,11 +254,19 @@ static int tftp_protocol( | |||
| 263 | if (!ENABLE_TFTP || our_lsa) { | 254 | if (!ENABLE_TFTP || our_lsa) { |
| 264 | #if ENABLE_FEATURE_TFTP_BLOCKSIZE | 255 | #if ENABLE_FEATURE_TFTP_BLOCKSIZE |
| 265 | if (blksize != TFTP_BLKSIZE_DEFAULT) { | 256 | if (blksize != TFTP_BLKSIZE_DEFAULT) { |
| 266 | /* Create and send OACK packet. continued */ | 257 | /* Create and send OACK packet. */ |
| 258 | /* For the download case, block_nr is still 1 - | ||
| 259 | * we expect 1st ACK from peer to be for (block_nr-1), | ||
| 260 | * that is, for "block 0" which is our OACK pkt */ | ||
| 261 | opcode = TFTP_OACK; | ||
| 267 | goto add_blksize_opt; | 262 | goto add_blksize_opt; |
| 268 | } | 263 | } |
| 269 | #endif | 264 | #endif |
| 270 | } else { | 265 | } |
| 266 | else { | ||
| 267 | /* Removing it, or using if() statement instead may lead to | ||
| 268 | * "warning: null argument where non-null required": */ | ||
| 269 | #if ENABLE_TFTP | ||
| 271 | /* tftp */ | 270 | /* tftp */ |
| 272 | 271 | ||
| 273 | /* We can't (and don't really need to) bind the socket: | 272 | /* We can't (and don't really need to) bind the socket: |
| @@ -286,7 +285,6 @@ static int tftp_protocol( | |||
| 286 | if (CMD_GET(option_mask32)) { | 285 | if (CMD_GET(option_mask32)) { |
| 287 | opcode = TFTP_RRQ; | 286 | opcode = TFTP_RRQ; |
| 288 | } | 287 | } |
| 289 | cp = xbuf + 2; | ||
| 290 | /* add filename and mode */ | 288 | /* add filename and mode */ |
| 291 | /* fill in packet if the filename fits into xbuf */ | 289 | /* fill in packet if the filename fits into xbuf */ |
| 292 | len = strlen(remote_file) + 1; | 290 | len = strlen(remote_file) + 1; |
| @@ -301,19 +299,24 @@ static int tftp_protocol( | |||
| 301 | cp += sizeof("octet"); | 299 | cp += sizeof("octet"); |
| 302 | 300 | ||
| 303 | #if ENABLE_FEATURE_TFTP_BLOCKSIZE | 301 | #if ENABLE_FEATURE_TFTP_BLOCKSIZE |
| 304 | if (blksize != TFTP_BLKSIZE_DEFAULT) { | 302 | if (blksize == TFTP_BLKSIZE_DEFAULT) |
| 305 | /* rfc2348 says that 65464 is a max allowed value */ | 303 | goto send_pkt; |
| 306 | if ((&xbuf[io_bufsize - 1] - cp) < sizeof("blksize NNNNN")) { | 304 | |
| 307 | bb_error_msg("remote filename is too long"); | 305 | /* Non-standard blocksize: add option to pkt */ |
| 308 | goto ret; | 306 | if ((&xbuf[io_bufsize - 1] - cp) < sizeof("blksize NNNNN")) { |
| 309 | } | 307 | bb_error_msg("remote filename is too long"); |
| 310 | want_option_ack = 1; | 308 | goto ret; |
| 311 | add_blksize_opt: | ||
| 312 | /* add "blksize", <nul>, blksize, <nul> */ | ||
| 313 | strcpy(cp, "blksize"); | ||
| 314 | cp += sizeof("blksize"); | ||
| 315 | cp += snprintf(cp, 6, "%d", blksize) + 1; | ||
| 316 | } | 309 | } |
| 310 | want_option_ack = 1; | ||
| 311 | #endif | ||
| 312 | #endif /* ENABLE_TFTP */ | ||
| 313 | |||
| 314 | #if ENABLE_FEATURE_TFTP_BLOCKSIZE | ||
| 315 | add_blksize_opt: | ||
| 316 | /* add "blksize", <nul>, blksize, <nul> */ | ||
| 317 | strcpy(cp, "blksize"); | ||
| 318 | cp += sizeof("blksize"); | ||
| 319 | cp += snprintf(cp, 6, "%d", blksize) + 1; | ||
| 317 | #endif | 320 | #endif |
| 318 | /* First packet is built, so skip packet generation */ | 321 | /* First packet is built, so skip packet generation */ |
| 319 | goto send_pkt; | 322 | goto send_pkt; |
| @@ -540,7 +543,9 @@ int tftp_main(int argc ATTRIBUTE_UNUSED, char **argv) | |||
| 540 | len_and_sockaddr *peer_lsa; | 543 | len_and_sockaddr *peer_lsa; |
| 541 | const char *local_file = NULL; | 544 | const char *local_file = NULL; |
| 542 | const char *remote_file = NULL; | 545 | const char *remote_file = NULL; |
| 543 | const char *blksize_str = "512"; | 546 | #if ENABLE_FEATURE_TFTP_BLOCKSIZE |
| 547 | const char *blksize_str = TFTP_BLKSIZE_DEFAULT_STR; | ||
| 548 | #endif | ||
| 544 | int blksize; | 549 | int blksize; |
| 545 | int result; | 550 | int result; |
| 546 | int port; | 551 | int port; |
| @@ -567,6 +572,8 @@ int tftp_main(int argc ATTRIBUTE_UNUSED, char **argv) | |||
| 567 | //bb_error_msg("bad block size"); | 572 | //bb_error_msg("bad block size"); |
| 568 | return EXIT_FAILURE; | 573 | return EXIT_FAILURE; |
| 569 | } | 574 | } |
| 575 | #else | ||
| 576 | blksize = TFTP_BLKSIZE_DEFAULT; | ||
| 570 | #endif | 577 | #endif |
| 571 | 578 | ||
| 572 | if (!local_file) | 579 | if (!local_file) |
| @@ -647,7 +654,7 @@ int tftpd_main(int argc ATTRIBUTE_UNUSED, char **argv) | |||
| 647 | opcode = ntohs(*(uint16_t*)block_buf); | 654 | opcode = ntohs(*(uint16_t*)block_buf); |
| 648 | if (result < 4 || result >= sizeof(block_buf) | 655 | if (result < 4 || result >= sizeof(block_buf) |
| 649 | || block_buf[result-1] != '\0' | 656 | || block_buf[result-1] != '\0' |
| 650 | || (USE_FEATURE_TFTP_GET(opcode != TFTP_RRQ) /* not download */ | 657 | || (USE_FEATURE_TFTP_PUT(opcode != TFTP_RRQ) /* not download */ |
| 651 | USE_GETPUT(&&) | 658 | USE_GETPUT(&&) |
| 652 | USE_FEATURE_TFTP_GET(opcode != TFTP_WRQ) /* not upload */ | 659 | USE_FEATURE_TFTP_GET(opcode != TFTP_WRQ) /* not upload */ |
| 653 | ) | 660 | ) |
diff --git a/scripts/trylink b/scripts/trylink index ebfe6cee3..89e36b7e9 100755 --- a/scripts/trylink +++ b/scripts/trylink | |||
| @@ -116,7 +116,7 @@ try $CC $CFLAGS $LDFLAGS \ | |||
| 116 | -Wl,--start-group $O_FILES $A_FILES -Wl,--end-group \ | 116 | -Wl,--start-group $O_FILES $A_FILES -Wl,--end-group \ |
| 117 | $l_list \ | 117 | $l_list \ |
| 118 | || { | 118 | || { |
| 119 | echo "Failed: $* $l_list" | 119 | echo "Failed: $l_list" |
| 120 | cat $EXE.out | 120 | cat $EXE.out |
| 121 | exit 1 | 121 | exit 1 |
| 122 | } | 122 | } |
diff --git a/util-linux/Config.in b/util-linux/Config.in index 8ca86c87d..1f4322bec 100644 --- a/util-linux/Config.in +++ b/util-linux/Config.in | |||
| @@ -639,6 +639,7 @@ config FEATURE_MOUNT_LABEL | |||
| 639 | bool "Support specifiying devices by label or UUID" | 639 | bool "Support specifiying devices by label or UUID" |
| 640 | default n | 640 | default n |
| 641 | depends on MOUNT | 641 | depends on MOUNT |
| 642 | select VOLUMEID | ||
| 642 | help | 643 | help |
| 643 | This allows for specifying a device by label or uuid, rather than by | 644 | This allows for specifying a device by label or uuid, rather than by |
| 644 | name. This feature utilizes the same functionality as findfs. | 645 | name. This feature utilizes the same functionality as findfs. |
