bb_askpass: shorten static password buffer. 256 is way too large. simplify code a bit.
This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)
No binary (build failed)
—
(log yok)
| @@ -715,7 +715,7 @@ int tar_main(int argc, char **argv) | |
| if ((tar_handle->action_header == header_list) || | |
| (tar_handle->action_header == header_verbose_list)) | |
| { | |
| - | tar_handle->action_header = header_verbose_list; |
| + | tar_handle->action_header = header_verbose_list; |
| } else tar_handle->action_header = header_list; | |
| } | |
| if((opt & CTX_EXTRACT) && tar_handle->action_data != data_extract_to_stdout) | |
| @@ -17,8 +17,6 @@ | |
| #include <sys/ioctl.h> | |
| #include "libbb.h" | |
| - | #define PWD_BUFFER_SIZE 256 |
| - | |
| /* do nothing signal handler */ | |
| static void askpass_timeout(int ATTRIBUTE_UNUSED ignore) | |
| @@ -27,18 +25,17 @@ static void askpass_timeout(int ATTRIBUTE_UNUSED ignore) | |
| char *bb_askpass(int timeout, const char * prompt) | |
| { | |
| + | static char passwd[64]; |
| + | |
| char *ret; | |
| - | int i, size; |
| + | int i; |
| struct sigaction sa; | |
| struct termios old, new; | |
| - | static char passwd[PWD_BUFFER_SIZE]; |
| tcgetattr(STDIN_FILENO, &old); | |
| tcflush(STDIN_FILENO, TCIFLUSH); | |
| - | size = sizeof(passwd); |
| - | ret = passwd; |
| - | memset(passwd, 0, size); |
| + | memset(passwd, 0, sizeof(passwd)); |
| fputs(prompt, stdout); | |
| fflush(stdout); | |
| @@ -55,15 +52,16 @@ char *bb_askpass(int timeout, const char * prompt) | |
| alarm(timeout); | |
| } | |
| - | if (read(STDIN_FILENO, passwd, size-1) <= 0) { |
| - | ret = NULL; |
| - | } else { |
| - | for(i = 0; i < size && passwd[i]; i++) { |
| - | if (passwd[i]== '\r' || passwd[i] == '\n') { |
| - | passwd[i]= 0; |
| - | break; |
| - | } |
| - | } |
| + | ret = NULL; |
| + | if (read(STDIN_FILENO, passwd, sizeof(passwd)-1) > 0) { |
| + | ret = passwd; |
| + | i = 0; |
| + | /* Last byte is guaranteed to be 0 |
| + | (read did not overwrite it) */ |
| + | do { |
| + | if (passwd[i] == '\r' || passwd[i] == '\n') |
| + | passwd[i] = 0; |
| + | } while (passwd[i++]); |
| } | |
| if (timeout) { | |
| @@ -71,8 +69,7 @@ char *bb_askpass(int timeout, const char * prompt) | |
| } | |
| tcsetattr(STDIN_FILENO, TCSANOW, &old); | |
| - | fputs("\n", stdout); |
| + | puts(""); |
| fflush(stdout); | |
| return ret; | |
| } | |
| - | |
| @@ -104,7 +104,6 @@ const char *bb_opt_complementally | |
| if they are not specifed on the command line. For example: | |
| bb_opt_complementally = "abc"; | |
| - | |
| flags = bb_getopt_ulflags(argc, argv, "abcd") | |
| If getopt() finds "-a" on the command line, then | |
| @@ -120,7 +119,6 @@ const char *bb_opt_complementally | |
| int w_counter = 0; | |
| bb_opt_complementally = "ww"; | |
| bb_getopt_ulflags(argc, argv, "w", &w_counter); | |
| - | |
| if(w_counter) | |
| width = (w_counter == 1) ? 132 : INT_MAX; | |
| else | |
| @@ -128,6 +126,7 @@ const char *bb_opt_complementally | |
| w_counter is a pointer to an integer. It has to be passed to | |
| bb_getopt_ulflags() after all other option argument sinks. | |
| + | |
| For example: accept multiple -v to indicate the level of verbosity | |
| and for each -b optarg, add optarg to my_b. Finally, if b is given, | |
| turn off c and vice versa: | |
| @@ -136,8 +135,8 @@ const char *bb_opt_complementally | |
| int verbose_level = 0; | |
| bb_opt_complementally = "vv:b::b-c:c-b"; | |
| f = bb_getopt_ulflags(argc, argv, "vb:c", &my_b, &verbose_level); | |
| - | if((f & 2)) // -c after -b unsets -b flag |
| - | while(my_b) { dosomething_with(my_b->data) ; my_b = my_b->link; } |
| + | if(f & 2) // -c after -b unsets -b flag |
| + | while(my_b) { dosomething_with(my_b->data); my_b = my_b->link; } |
| if(my_b) // but llist is stored if -b is specified | |
| free_llist(my_b); | |
| if(verbose_level) bb_printf("verbose level is %d\n", verbose_level); | |
| @@ -237,7 +236,7 @@ Special characters: | |
| "--" A double dash at the beginning of bb_opt_complementally means the | |
| argv[1] string should always be treated as options, even if it isn't | |
| - | prefixed with a "-". This is to support the special syntax in applets |
| + | prefixed with a "-". This is useful for special syntax in applets |
| such as "ar" and "tar": | |
| tar xvf foo.tar | |
| @@ -2058,13 +2058,13 @@ static void identify_from_stdin(void) | |
| /* busybox specific stuff */ | |
| static void parse_opts(unsigned long *get, unsigned long *set, unsigned long *value, int min, int max) | |
| { | |
| - | if (get) { |
| - | *get = 1; |
| - | } |
| - | if (optarg) { |
| - | *set = 1; |
| - | *value = bb_xgetlarg(optarg, 10, min, max); |
| - | } |
| + | if (get) { |
| + | *get = 1; |
| + | } |
| + | if (optarg) { |
| + | *set = 1; |
| + | *value = bb_xgetlarg(optarg, 10, min, max); |
| + | } |
| } | |
| static void parse_xfermode(int flag, unsigned long *get, unsigned long *set, int *value) | |