[prev in list] [next in list] [prev in thread] [next in thread]
List: uclibc
Subject: [PATCH] use 36 byte buffer in md5 instead of 120, shrink code
From: vda.linux () googlemail ! com (Denys Vlasenko)
Date: 2008-06-13 20:09:15
Message-ID: 200806132209.15181.vda.linux () googlemail ! com
[Download RAW message or body]
On Friday 13 June 2008 19:30, Peter Kjellerstedt wrote:
> > -----Original Message-----
> > From: uclibc-bounces at uclibc.org [mailto:uclibc-bounces at uclibc.org] On
> > Behalf Of Denys Vlasenko
> > Sent: den 13 juni 2008 17:46
> > To: uclibc at uclibc.org
> > Subject: Re: [PATCH] use 36 byte buffer in md5 instead of 120, shrink
> > code
> >
> > On Friday 13 June 2008 17:45, Denys Vlasenko wrote:
> > > 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.
> > >
> > > Size:
> > >
> > > 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.
> >
> > Now even with patch actually attached.
> > --
> > vda
>
> You changed the type of the second argument to __md5_to64() from
> unsigned long to unsigned, but in __md5_crypt() you are still
> passing it l (stupid variable name) which is unsigned long.
Good eyes, I didn't think about chasing that variable's type.
It didn't materially affect generated code, but being consistent
is better.
Anyway, unsigned long->unsigned was intended. unsigned long can be
64 bit wide, we don't need that. 32 bits is enough here (24 actually).
In this patch, I fix it, and also move "unsigned l" into
much smaller scope. Helps next reader/editor to see it.
--
vda
-------------- next part --------------
A non-text attachment was scrubbed...
Name: a.patch
Type: text/x-diff
Size: 2306 bytes
Desc: not available
Url : http://busybox.net/lists/uclibc/attachments/20080613/810e7a2c/attachment.patch
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic