This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 1/25] Remove nested functions: crypt/md5-crypt.c
- From: Konstantin Serebryany <konstantin dot s dot serebryany at gmail dot com>
- To: Siddhesh Poyarekar <siddhesh at redhat dot com>
- Cc: GNU C Library <libc-alpha at sourceware dot org>
- Date: Tue, 3 Jun 2014 12:28:35 +0400
- Subject: Re: [PATCH 1/25] Remove nested functions: crypt/md5-crypt.c
- Authentication-results: sourceware.org; auth=none
- References: <CAGQ9bdzqT1EyXYMwACrHpPU=vPjM_b72LJRjb7BW_OzJRXG3bw at mail dot gmail dot com> <20140520131314 dot GB14500 at spoyarek dot pnq dot redhat dot com> <CAGQ9bdw=-pzbi00gn5t_W8pXBjU0edFvLGMNUc+o=g9og=f9+Q at mail dot gmail dot com> <20140522145906 dot GX14500 at spoyarek dot pnq dot redhat dot com> <CAGQ9bdzL=EXg0RrJ6xs5n7uW6xWj6Mgrc5e=WWZ25-07k8ThGQ at mail dot gmail dot com> <CAGQ9bdzXbO3QuuS=8-m2HqxYNyahMpTRmfGH90SMZ3j2oozU6g at mail dot gmail dot com> <20140602180811 dot GC9145 at spoyarek dot pnq dot redhat dot com>
On Mon, Jun 2, 2014 at 10:08 PM, Siddhesh Poyarekar <siddhesh@redhat.com> wrote:
> On Mon, Jun 02, 2014 at 08:50:51AM +0400, Konstantin Serebryany wrote:
>> Any comment on this patch?
>
> It results in a bunch of build warnings with gcc. Please fix those.
Indeed so, needed one extra include. Fixed, please check the new patch.
Did you just see the warnings with your eyes, or do you use a special
configure switch or some such to turn them into errors?
I've run full build with and w/o my patch. The diff of sorted warnings
looks like this:
--- w0 2014-06-03 12:22:39.299947245 +0400
+++ w1 2014-06-03 12:22:41.755918580 +0400
@@ -29,6 +29,7 @@
dynamic-link.h:179:8: warning: "ELF_MACHINE_NO_RELA" is not defined [-Wundef]
dynamic-link.h:179:8: warning: "ELF_MACHINE_NO_RELA" is not defined [-Wundef]
dynamic-link.h:179:8: warning: "ELF_MACHINE_NO_RELA" is not defined [-Wundef]
+dynamic-link.h:179:8: warning: "ELF_MACHINE_NO_RELA" is not defined [-Wundef]
dynamic-link.h:66:8: warning: "ELF_MACHINE_NO_RELA" is not defined [-Wundef]
dynamic-link.h:66:8: warning: "ELF_MACHINE_NO_RELA" is not defined [-Wundef]
dynamic-link.h:66:8: warning: "ELF_MACHINE_NO_RELA" is not defined [-Wundef]
@@ -458,6 +459,12 @@
../malloc/obstack.h:255:23: warning: "__NeXT__" is not defined [-Wundef]
../malloc/obstack.h:255:23: warning: "__NeXT__" is not defined [-Wundef]
../malloc/obstack.h:255:23: warning: "__NeXT__" is not defined [-Wundef]
+../malloc/obstack.h:255:23: warning: "__NeXT__" is not defined [-Wundef]
+../malloc/obstack.h:255:23: warning: "__NeXT__" is not defined [-Wundef]
+../malloc/obstack.h:255:23: warning: "__NeXT__" is not defined [-Wundef]
+../malloc/obstack.h:255:23: warning: "__NeXT__" is not defined [-Wundef]
+../malloc/obstack.h:255:23: warning: "__NeXT__" is not defined [-Wundef]
+../malloc/obstack.h:255:23: warning: "__NeXT__" is not defined [-Wundef]
../malloc/obstack.h:255:23: warning: "__NeXT__" is not defined [-Wundef]
../malloc/obstack.h:255:23: warning: "__NeXT__" is not defined [-Wundef]
../malloc/obstack.h:255:23: warning: "__NeXT__" is not defined [-Wundef]
So, there are no new kinds of warnings added with the current patch.
--kcc
>
> Siddhesh
>
>>
>> On Thu, May 22, 2014 at 7:14 PM, Konstantin Serebryany
>> <konstantin.s.serebryany@gmail.com> wrote:
>> > On Thu, May 22, 2014 at 6:59 PM, Siddhesh Poyarekar <siddhesh@redhat.com> wrote:
>> >> On Tue, May 20, 2014 at 06:23:40PM +0400, Konstantin Serebryany wrote:
>> >>> 2014-05-20 Kostya Serebryany <konstantin.s.serebryany@gmail.com>
>> >>>
>> >>> * crypt/md5-crypt.c (__md5_crypt_r): Remove a nested function.
>> >>> (b64_from_24bit): New function.
>> >>>
>> >>
>> >> I have pushed this (and the formatting fix) now.
>> >
>> > Excellent, thanks!
>> > Here is the next patch with (hopefully) correct tabs:
>> >
>> > 2014-05-22 Kostya Serebryany <konstantin.s.serebryany@gmail.com>
>> >
>> > * crypt/crypt-private.h: Include ufc-crypt.h.
>> > (__b64_from_24bit): Declare extern.
>> > * crypt/crypt_util.c(__b64_from_24bit): New function.
>> > (b64t): New static const variable.
>> > * crypt/md5-crypt.c (b64_from_24bit): Remove function.
>> > (b64t): Remove variable.
>> > (__md5_crypt_r): Replace b64_from_24bit with __b64_from_24bit.
>> > * crypt/sha256-crypt.c: Include crypt-private.h.
>> > (b64t): Remove variable.
>> > (__sha256_crypt_r): Remove b64_from_24bit and replace
>> > with __b64_from_24bit.
>> > * crypt/sha512-crypt.c: Likewise.
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >>
>> >> Siddhesh
diff --git a/crypt/crypt-private.h b/crypt/crypt-private.h
index fbaf9c4..ea46a7f 100644
--- a/crypt/crypt-private.h
+++ b/crypt/crypt-private.h
@@ -28,6 +28,9 @@
#include <features.h>
#include <stdbool.h>
+#include "ufc-crypt.h"
+#include "crypt.h"
+
/* crypt.c */
extern void _ufc_doit_r (ufc_long itr, struct crypt_data * __restrict __data,
ufc_long *res);
@@ -57,4 +60,8 @@ extern char *__crypt_r (const char *__key, const char *__salt,
struct crypt_data * __restrict __data);
extern char *fcrypt (const char *key, const char *salt);
+extern void __b64_from_24bit (char **cp, int *buflen,
+ unsigned int b2, unsigned int b1, unsigned int b0,
+ int n);
+
#endif /* crypt-private.h */
diff --git a/crypt/crypt_util.c b/crypt/crypt_util.c
index 2875931..9381d67 100644
--- a/crypt/crypt_util.c
+++ b/crypt/crypt_util.c
@@ -253,6 +253,10 @@ static ufc_long eperm32tab[4][256][2];
*/
static ufc_long efp[16][64][2];
+/* Table with characters for base64 transformation. */
+static const char b64t[64] =
+"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+
/*
* For use by the old, non-reentrant routines
* (crypt/encrypt/setkey)
@@ -956,3 +960,17 @@ setkey(__key)
{
__setkey_r(__key, &_ufc_foobar);
}
+
+void
+__b64_from_24bit (char **cp, int *buflen,
+ unsigned int b2, unsigned int b1, unsigned int b0,
+ int n)
+{
+ unsigned int w = (b2 << 16) | (b1 << 8) | b0;
+ while (n-- > 0 && (*buflen) > 0)
+ {
+ *(*cp)++ = b64t[w & 0x3f];
+ --(*buflen);
+ w >>= 6;
+ }
+}
diff --git a/crypt/md5-crypt.c b/crypt/md5-crypt.c
index f6739d3..0aa4f7e 100644
--- a/crypt/md5-crypt.c
+++ b/crypt/md5-crypt.c
@@ -25,6 +25,7 @@
#include <sys/param.h>
#include "md5.h"
+#include "crypt-private.h"
#ifdef USE_NSS
@@ -78,30 +79,12 @@ typedef int PRBool;
encryption implementations. */
static const char md5_salt_prefix[] = "$1$";
-/* Table with characters for base64 transformation. */
-static const char b64t[64] =
-"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-
/* Prototypes for local functions. */
extern char *__md5_crypt_r (const char *key, const char *salt,
char *buffer, int buflen);
extern char *__md5_crypt (const char *key, const char *salt);
-static void
-b64_from_24bit (char **cp, int *buflen,
- unsigned int b2, unsigned int b1, unsigned int b0,
- int n)
-{
- unsigned int w = (b2 << 16) | (b1 << 8) | b0;
- while (n-- > 0 && *buflen > 0)
- {
- *(*cp)++ = b64t[w & 0x3f];
- --*buflen;
- w >>= 6;
- }
-}
-
/* This entry point is equivalent to the `crypt' function in Unix
libcs. */
@@ -282,18 +265,18 @@ __md5_crypt_r (key, salt, buffer, buflen)
--buflen;
}
- b64_from_24bit (&cp, &buflen,
- alt_result[0], alt_result[6], alt_result[12], 4);
- b64_from_24bit (&cp, &buflen,
- alt_result[1], alt_result[7], alt_result[13], 4);
- b64_from_24bit (&cp, &buflen,
- alt_result[2], alt_result[8], alt_result[14], 4);
- b64_from_24bit (&cp, &buflen,
- alt_result[3], alt_result[9], alt_result[15], 4);
- b64_from_24bit (&cp, &buflen,
- alt_result[4], alt_result[10], alt_result[5], 4);
- b64_from_24bit (&cp, &buflen,
- 0, 0, alt_result[11], 2);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[0], alt_result[6], alt_result[12], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[1], alt_result[7], alt_result[13], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[2], alt_result[8], alt_result[14], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[3], alt_result[9], alt_result[15], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[4], alt_result[10], alt_result[5], 4);
+ __b64_from_24bit (&cp, &buflen,
+ 0, 0, alt_result[11], 2);
if (buflen <= 0)
{
__set_errno (ERANGE);
diff --git a/crypt/sha256-crypt.c b/crypt/sha256-crypt.c
index cf0abd2..6f6a722 100644
--- a/crypt/sha256-crypt.c
+++ b/crypt/sha256-crypt.c
@@ -26,6 +26,7 @@
#include <sys/param.h>
#include "sha256.h"
+#include "crypt-private.h"
#ifdef USE_NSS
@@ -90,10 +91,6 @@ static const char sha256_rounds_prefix[] = "rounds=";
/* Maximum number of rounds. */
#define ROUNDS_MAX 999999999
-/* Table with characters for base64 transformation. */
-static const char b64t[64] =
-"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-
/* Prototypes for local functions. */
extern char *__sha256_crypt_r (const char *key, const char *salt,
@@ -341,29 +338,28 @@ __sha256_crypt_r (key, salt, buffer, buflen)
--buflen;
}
- void b64_from_24bit (unsigned int b2, unsigned int b1, unsigned int b0,
- int n)
- {
- unsigned int w = (b2 << 16) | (b1 << 8) | b0;
- while (n-- > 0 && buflen > 0)
- {
- *cp++ = b64t[w & 0x3f];
- --buflen;
- w >>= 6;
- }
- }
-
- b64_from_24bit (alt_result[0], alt_result[10], alt_result[20], 4);
- b64_from_24bit (alt_result[21], alt_result[1], alt_result[11], 4);
- b64_from_24bit (alt_result[12], alt_result[22], alt_result[2], 4);
- b64_from_24bit (alt_result[3], alt_result[13], alt_result[23], 4);
- b64_from_24bit (alt_result[24], alt_result[4], alt_result[14], 4);
- b64_from_24bit (alt_result[15], alt_result[25], alt_result[5], 4);
- b64_from_24bit (alt_result[6], alt_result[16], alt_result[26], 4);
- b64_from_24bit (alt_result[27], alt_result[7], alt_result[17], 4);
- b64_from_24bit (alt_result[18], alt_result[28], alt_result[8], 4);
- b64_from_24bit (alt_result[9], alt_result[19], alt_result[29], 4);
- b64_from_24bit (0, alt_result[31], alt_result[30], 3);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[0], alt_result[10], alt_result[20], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[21], alt_result[1], alt_result[11], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[12], alt_result[22], alt_result[2], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[3], alt_result[13], alt_result[23], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[24], alt_result[4], alt_result[14], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[15], alt_result[25], alt_result[5], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[6], alt_result[16], alt_result[26], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[27], alt_result[7], alt_result[17], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[18], alt_result[28], alt_result[8], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[9], alt_result[19], alt_result[29], 4);
+ __b64_from_24bit (&cp, &buflen,
+ 0, alt_result[31], alt_result[30], 3);
if (buflen <= 0)
{
__set_errno (ERANGE);
diff --git a/crypt/sha512-crypt.c b/crypt/sha512-crypt.c
index c0338a7..5e323ea 100644
--- a/crypt/sha512-crypt.c
+++ b/crypt/sha512-crypt.c
@@ -26,6 +26,7 @@
#include <sys/param.h>
#include "sha512.h"
+#include "crypt-private.h"
#ifdef USE_NSS
@@ -90,10 +91,6 @@ static const char sha512_rounds_prefix[] = "rounds=";
/* Maximum number of rounds. */
#define ROUNDS_MAX 999999999
-/* Table with characters for base64 transformation. */
-static const char b64t[64] =
-"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-
/* Prototypes for local functions. */
extern char *__sha512_crypt_r (const char *key, const char *salt,
@@ -340,40 +337,50 @@ __sha512_crypt_r (key, salt, buffer, buflen)
--buflen;
}
- void b64_from_24bit (unsigned int b2, unsigned int b1, unsigned int b0,
- int n)
- {
- unsigned int w = (b2 << 16) | (b1 << 8) | b0;
- while (n-- > 0 && buflen > 0)
- {
- *cp++ = b64t[w & 0x3f];
- --buflen;
- w >>= 6;
- }
- }
-
- b64_from_24bit (alt_result[0], alt_result[21], alt_result[42], 4);
- b64_from_24bit (alt_result[22], alt_result[43], alt_result[1], 4);
- b64_from_24bit (alt_result[44], alt_result[2], alt_result[23], 4);
- b64_from_24bit (alt_result[3], alt_result[24], alt_result[45], 4);
- b64_from_24bit (alt_result[25], alt_result[46], alt_result[4], 4);
- b64_from_24bit (alt_result[47], alt_result[5], alt_result[26], 4);
- b64_from_24bit (alt_result[6], alt_result[27], alt_result[48], 4);
- b64_from_24bit (alt_result[28], alt_result[49], alt_result[7], 4);
- b64_from_24bit (alt_result[50], alt_result[8], alt_result[29], 4);
- b64_from_24bit (alt_result[9], alt_result[30], alt_result[51], 4);
- b64_from_24bit (alt_result[31], alt_result[52], alt_result[10], 4);
- b64_from_24bit (alt_result[53], alt_result[11], alt_result[32], 4);
- b64_from_24bit (alt_result[12], alt_result[33], alt_result[54], 4);
- b64_from_24bit (alt_result[34], alt_result[55], alt_result[13], 4);
- b64_from_24bit (alt_result[56], alt_result[14], alt_result[35], 4);
- b64_from_24bit (alt_result[15], alt_result[36], alt_result[57], 4);
- b64_from_24bit (alt_result[37], alt_result[58], alt_result[16], 4);
- b64_from_24bit (alt_result[59], alt_result[17], alt_result[38], 4);
- b64_from_24bit (alt_result[18], alt_result[39], alt_result[60], 4);
- b64_from_24bit (alt_result[40], alt_result[61], alt_result[19], 4);
- b64_from_24bit (alt_result[62], alt_result[20], alt_result[41], 4);
- b64_from_24bit (0, 0, alt_result[63], 2);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[0], alt_result[21], alt_result[42], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[22], alt_result[43], alt_result[1], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[44], alt_result[2], alt_result[23], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[3], alt_result[24], alt_result[45], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[25], alt_result[46], alt_result[4], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[47], alt_result[5], alt_result[26], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[6], alt_result[27], alt_result[48], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[28], alt_result[49], alt_result[7], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[50], alt_result[8], alt_result[29], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[9], alt_result[30], alt_result[51], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[31], alt_result[52], alt_result[10], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[53], alt_result[11], alt_result[32], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[12], alt_result[33], alt_result[54], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[34], alt_result[55], alt_result[13], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[56], alt_result[14], alt_result[35], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[15], alt_result[36], alt_result[57], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[37], alt_result[58], alt_result[16], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[59], alt_result[17], alt_result[38], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[18], alt_result[39], alt_result[60], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[40], alt_result[61], alt_result[19], 4);
+ __b64_from_24bit (&cp, &buflen,
+ alt_result[62], alt_result[20], alt_result[41], 4);
+ __b64_from_24bit (&cp, &buflen,
+ 0, 0, alt_result[63], 2);
if (buflen <= 0)
{