- don't free user-supplied string (via -e)
[oweals/busybox.git] / loginutils / cryptpw.c
index 1acbc6db0cb9dbb9f7e7f86988746bac37a63162..db5d95920a94ccbc6b309cb1278fc3bfff153890 100644 (file)
@@ -15,14 +15,14 @@ if you played with bbox's crypt implementation.
 
 while read line; do
        n=`./busybox cryptpw -a des -- "$line"`
-       o=`./busybox_old cryptpw -a des -- "$line"`
+       o=`./busybox_org cryptpw -a des -- "$line"`
        test "$n" != "$o" && {
                echo n="$n"
                echo o="$o"
                exit
        }
        n=`./busybox cryptpw -- "$line"`
-       o=`./busybox_old cryptpw -- "$line"`
+       o=`./busybox_org cryptpw -- "$line"`
        test "$n" != "$o" && {
                echo n="$n"
                echo o="$o"
@@ -32,15 +32,15 @@ done
  */
 
 int cryptpw_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int cryptpw_main(int argc ATTRIBUTE_UNUSED, char **argv)
+int cryptpw_main(int argc UNUSED_PARAM, char **argv)
 {
        char salt[sizeof("$N$XXXXXXXX")];
+       char *opt_a;
 
-       if (!getopt32(argv, "a:", NULL) || argv[optind - 1][0] != 'd') {
-               strcpy(salt, "$1$");
-               /* 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) */
+       if (!getopt32(argv, "a:", &opt_a) || opt_a[0] != 'd') {
+               salt[0] = '$';
+               salt[1] = '1';
+               salt[2] = '$';
                crypt_make_salt(salt + 3, 4, 0); /* md5 */
 #if TESTING
                strcpy(salt + 3, "ajg./bcf");