cryptpw: size reduction function old new delta cryptpw_main 198 140 -58 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-58)
No binary (build failed)
—
(log yok)
| @@ -3,7 +3,6 @@ | |
| * cryptpw.c | |
| * | |
| * Cooked from passwd.c by Thomas Lundquist <[email protected]> | |
| - | * |
| */ | |
| #include "busybox.h" | |
| @@ -11,27 +10,19 @@ | |
| int cryptpw_main(int argc, char **argv); | |
| int cryptpw_main(int argc, char **argv) | |
| { | |
| - | char *clear; |
| - | char salt[sizeof("$N$XXXXXXXX")]; /* "$N$XXXXXXXX" or "XX" */ |
| - | const char *opt_a = "md5"; |
| - | |
| - | getopt32(argc, argv, "a:", &opt_a); |
| - | /* move past the commandline options */ |
| - | /*argc -= optind; - unused */ |
| - | argv += optind; |
| + | char salt[sizeof("$N$XXXXXXXX")]; |
| - | crypt_make_salt(salt, 1); /* des */ |
| - | if (strcasecmp(opt_a, "md5") == 0) { |
| + | if (!getopt32(argc, argv, "a:", NULL) || argv[optind - 1][0] != 'd') { |
| strcpy(salt, "$1$"); | |
| - | crypt_make_salt(salt + 3, 4); |
| - | } else if (strcasecmp(opt_a, "des") != 0) { |
| - | bb_show_usage(); |
| + | /* Too ugly, and needs even more magic to handle endianness: */ |
| + | //((uint32_t*)&salt)[0] = '$' + '1'*0x100 + '$'*0x10000; |
| + | /* Hope one day gcc will do it itself (inlining strcpy) */ |
| + | crypt_make_salt(salt + 3, 4); /* md5 */ |
| + | } else { |
| + | crypt_make_salt(salt, 1); /* des */ |
| } | |
| - | clear = argv[0]; |
| - | if (!clear) |
| - | clear = xmalloc_getline(stdin); |
| + | puts(pw_encrypt(argv[optind] ? argv[optind] : xmalloc_getline(stdin), salt)); |
| - | puts(pw_encrypt(clear, salt)); |
| return 0; | |
| } | |