[PATCH] use 36 byte buffer in md5 instead of 120, shrink code

Denys Vlasenko vda.linux at googlemail.com
Fri Jun 13 15:45:03 UTC 2008

md5 crypt stores result in the form $1$xxx$yyyyyyyyy<NUL>

where xxx is salt (up to 8 chars) and yyy is hash
(22 chars). Using 120 bytes buffer for it is excessive.

The patch also replaces e.g. strcat(passwd,"$")
which writes $ between xxx and yyyy above with one-byte store,
which is shorter.

__md5_to64 is made to return advanced pointer, eliminating
the need to do it at call sites.


    text           data     bss     dec     hex filename
-   1905              0     120    2025     7e9 libcrypt/md5.o
+   1879              0      36    1915     77b libcrypt/md5.o

Run tested:
  TEST_EXEC crypt/ crypt
  TEST_DIFF crypt/ crypt.out crypt.out.good
  TEST_EXEC crypt/ md5c-test
  TEST_EXEC crypt/ crypt_glibc
  TEST_DIFF crypt/ crypt_glibc.out crypt.out.good
  TEST_EXEC crypt/ md5c-test_glibc

Please review.

More information about the uClibc mailing list